Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему замедляется работа процедуры?


MegaBonus ©   (2004-10-24 23:52:00) 

Доброе время суток! У меня такая проблема -
Существует процедура которая ищет в списке какие-то необходимые данные, в это время на панели два лейбла показывают - первый сколько всего в списке строк, а второй сколько уже найдено совпадений. Если не использовать отображение результатов работы процедуры с помощью этих лейблов, то время затрачиваемое процедурой на работу составляет ок. 1 секунды. А если использовать, то оно увеличивается почти до 10 секунд. Как сделать так чтобы и результаты отображались и время работы небыло таким большим?


GuAV   (2004-10-25 12:50:00) [1]

Я в такой ситуации сравнивал GetTickCount текущее значение со значением предыдущей прорисовки и рисовал когда разница больше 200.


MegaBonus   (2004-10-25 12:29:00) [2]

TUser ©   (25.10.04 10:57) [3]

Большое спасибо


TUser   (2004-10-25 10:57:00) [3]

Прорисовка - это дело медленное. Рисуй не всегда, а иногда только, примерно так
for i:=0 to ... do
begin

if i mod 100 = 0 then // На каждой сотой итерации
begin
label1.caption:='...';
application.processmessages;
end;
end;

ИМХО - при таком раскладе, если все за секунду делается - отображать прогресс совершенно лишнее.


4e6ypaTop _@(o,o)@_   (2004-10-25 00:15:00) [4]

Попробуй использовать не label.caption а например Form.caption


Palladin   (2004-10-24 23:59:00) [5]

обновлять лейблы пореже


Наверх

Титульная страница Поиск, карта сайта Написать письмо