Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.27;
Скачать: CL | DM;

Вниз

Индикация данных в цикле   Найти похожие ветки 

 
ska   (2003-01-10 18:08) [0]

Здравствуйте!
У меня такая проблема:
Есть некий итерационный процесс вида:

Repeat
..........
/чего-то там/
..........
Until ...

Итерационная процедура довольно сложная и долгая и хотелось бы, чтобы номер текущей итерации
индицировался на форме.
Делаю такой счетчик
i:=0;
Repeat
i:=i+1;
StatusBar1.Panels.Items[0].Text:=IntToStr(i);
............
Until ...

Так вот, в RealTime ничего не показывается и значение счетчика изменяется только после завершения цикла. Пробовал ставить Sleep после StatusBar1.Panels.Items[0].Text:=IntToStr(i), чтобы сообразить успел, но не помогает.
Подскажите решение пожалуйста!


 
Delirium^.Tremens ©   (2003-01-10 18:10) [1]

Application.ProcessMessages не пробовал?


 
Vit@ly ©   (2003-01-10 18:18) [2]

А что, по поводу StatusBar.Refresh


 
ska   (2003-01-10 18:52) [3]

Спасибо огромное! Попробовал Application.ProcessMessages - все работает :)


 
Roma ©   (2003-01-10 19:58) [4]

А если ты будешь вызывать Application.ProcessMessages не на каждой итерации цикла, а, например, раз в секунду - все будет работать гораздо быстрее...


 
Михаил   (2003-01-11 01:52) [5]

А стоит ли отбражать счётчик на каждой итерации? А меня, какой бы сложности не был цикл, визуально отследить каждое значение было очень-очень трудно. вывод каждого k-ого значения может увеличить скорость выполнения в разы (проверка i mod k=0 куда быстрее, чем вывод текста).


 
Roma ©   (2003-01-11 16:37) [6]

Конечно, не стоит, я ж к тому и клоню... Это во многие разы замедляет время выполнения цикла. А вывод процента выполнения (или что там выводится, неважно) на основе изменения переменной цикла - не совсем корректно, в разных условиях (на разных машинах, например) переменная цикла будет изменяться с разной скоростью; может получится, что текст будет обновляться много-много раз в секунду или наоборот, несколько раз в минуту... Имхо, правильнее следить за временем и информировать пользователя о ходе процесса выполнения не чаще одного раза в секунду.


 
ska   (2003-01-16 03:08) [7]

Спасибо большое! Я обязательно учту Ваши рекомендации :)
Счетчик - это я для примера привел. Просто, как какой-то параметр, который нужно отображать в ходе итерационного процесса. Там чуть более полезная информация будет индицироваться.
Но, все равно, ОГРОМНОЕ ВСЕМ СПАСИБО! :)
Application.ProcessMessages - это то, что мне было нужно!



Страницы: 1 вся ветка

Текущий архив: 2003.01.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
6-86990
kalishenko stas
2002-11-28 14:19
2003.01.27
Sockets и Internet


1-86929
id_privin
2003-01-16 16:39
2003.01.27
Свои наследники TAction в ActionList


7-87155
dravida
2002-11-14 18:03
2003.01.27
как узнать что мышь покинула форму?


7-87158
ctapik-net
2002-11-14 19:20
2003.01.27
WM_QUERYENDSESSION - shutdown or reboot?


1-86854
johny
2003-01-16 10:31
2003.01.27
Совмещение кода C++ & Delphi в однов проекте