Показать сообщение отдельно
  #16  
Старый 12.03.2014, 17:24
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от novashdima
Посмотрите, все ли правильно, а то вдруг утечки памяти какие и что-то подобное.
Иногда прога подвисает после приостановки и иногда возникает floating point division by zero на строке 73.
И когда останавливаю и потом заново стартую обработка начинается с прошлого места, и это связано с ошибкой выше, хотя вроде как все, что можно чищу.
Код:
.....
procedure TForm1.StartProcessClick(Sender: TObject);
begin
  if AnalysThread.Suspended
  then begin
         AnalysThread.Resume;
         *****
         end
  else begin
        AnalysThread.Suspend;
        ******
        end;
end;
Не рекомендуется насильно приостанавливать из одного потока другой. Об этом написано в справке MSDN и по-русски. Лучше всего сообщить потоку что он должен быть приостановлен и тогда сам поток дойдя до безопасной точки сам себя приостановит.
Цитата:
Сообщение от novashdima
Код:
   Position := Round(Form1.Gauge.MaxValue / Form1.ListBox.Count * i);
Здесь может быть деление на ноль.

И ещё немного смущают манипуляции с StringList. Создавать его лучше по-нужде, перед использованием проверять на наличие и разрушать в завершении приложения. Либо же создавать однажды при запуске приложения и разрушать при завершении приложения.
Ответить с цитированием