Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
14-87084
VictorT
2002-12-20 21:32
2003.01.27
Глюк в 6-м IE?


14-87038
r0ma
2003-01-10 16:53
2003.01.27
Для каких целей предназначен Delphi и чем он лучше других языков?


14-87117
Cr@sh
2003-01-06 10:11
2003.01.27
Скриншоты рабочих столов 3


1-86939
Олег
2003-01-16 19:11
2003.01.27
кнопки в стиле Win XP


14-87057
white@donses.ru
2003-01-07 14:46
2003.01.27
Помогите запустить программу с таблицей PARADOX на другом компе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский