Форум: "Основная";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
ВнизПомогите решить проблему с ProgressBar Найти похожие ветки
← →
Evg12 (2003-08-01 23:17) [40]Проверил, ктати сегодня, это так для информации. Скорость процедур, в которые включено отображение хода с помощью прогресбаров, Gauge, на прямую и очень сильно зависят от типов установленных видеоадаптеров.
Уважаеые. Еще мысли какие-то есть по теме?
← →
Юрий Зотов (2003-08-01 23:29) [41]> Evg12 (01.08.03 23:12)
> Юзер видит как программа вдруг неодиданно исчезает.
Не исчезает, потому что появляется форма с прогрессбаром. Юзер видит, что программа есть и что она работает.
← →
Evg12 (2003-08-01 23:38) [42]Не важно. Только что попробовал сделать Application.MainForm.Hide;
Application.MainForm.Show;
Результат = 0. Скорость не изменилась никак.
Теперь уже не приложу, почему такой тормоз. И как его убрать.
← →
Юрий Зотов (2003-08-01 23:46) [43]Значит, надо определить причину. Поможет Вам, видимо, профайлер.
← →
Evg12 (2003-08-02 03:37) [44]Выяснил в чем причина. Рассмотрел дитально код компонента. Проблема не в нем, а всетаки в прогрессбаре.
Я тут пока состряпал кое-что. Взяв зв основу пример из пакета дельфей 7. Но т.к. не силен в потоках. Наверняка наделал ошибок.
Получилось цикл for i:=0 to 1000000000 c отображением в прогрессбаре через Position:=i на пне III - 700 длится примерно 10 сек.Не зависимо от установленного видеоадаптера.
Сам не особо понимаю как это у меня вышло.
Может кто-то привести его в приличный вид? (всетаки у меня это - первый блин).
Исходник могу слить.
← →
Evg12 (2003-08-02 03:40) [45]Да забыл написать, Прогрессбар Пробовал растянуть на ширину всего экрана 1024 x 768 скорость не меняется никак.
← →
Anatoly Podgoretsky (2003-08-02 11:57) [46]Evg12 (02.08.03 03:37)
Ну так великолепный результат 100 000 000 в секунду, хочешь еще быстрее делай не 1 миллиард отрисовок, а только тысячу, будет занимать всего 10 микросекунд + время расчета
← →
Evg12 (2003-08-03 02:39) [47]Я имел в виду Чтоб на исходник глянули да сказали что я лишнего начудил. Может можно еще проще сделать. Я вот сам не понял до сих пор что делает inherited и еще кое что. И помогли решить еще одну проблему. - Как только форму с прогессбаром, когда выполняется цикл, начинаешь тягать мышкой по столу (под XP) весь процесс замедляется до 10% . Тоесть все нормально работает, пока не трогаешь.
← →
Плохиш (2003-08-03 02:58) [48]> Evg12
Может алгоритм программы пересмотреть?
← →
Evg12 (2003-08-03 04:58) [49]> Anatoly Podgoretsky
Корректонул код. Свел до 5 сек.
Да понимаешь, дело в том что у меня цикл for i:=0 to 1000000000 do i:=i; Примерно за 5 сек и исполняется.
>Плохиш
Да блин палка о двух концах и обе ударные получается.
Сделаеш без потока - используя mod (выше описано) - неравномерная задержка выходит. Сделаеш через поток, так к форме с прогресбаром дотронешся, или система запустит что-то с приоритетом выше и умирает все....
Еще мысли есть какие-то?
← →
BlackKing (2003-08-06 22:20) [50]Nu ne znaju, vsegda ispol"zoval GAUGE i nikogda i nigde ne tormozilo, proverjal na raznih mashinah, s raznimi video, dazhe na ochen" slabih. No eto na Delphi3. Mozhet bit" v posledujushih versijah chto-to namudrili? no v D3 vsjo prosto letajet.
← →
Igor Popov (2003-08-07 03:36) [51]используй Position
← →
Alibaba (2003-08-07 04:26) [52]Я тоже использую Position - и вполне доволен жизнью :)
← →
Slym (2003-08-07 08:01) [53]Попробуй DoubleBuffered...
var i:integer;
begin
ProgressBar1.DoubleBuffered:=true;
ProgressBar1.Position := 0;
ProgressBar1.Step := 1;
ProgressBar1.Max := 1000000;
for I := 1 to 1000000 do begin
ProgressBar1.Stepit;
Application.ProcessMessages;
end;
end;
Отрисовка должна ускорится...
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.01 c