|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.08.2007, 11:44 | #11 |
Александр
Форумчанин
Регистрация: 15.08.2007
Сообщений: 112
|
Alex21, извини, но не понял твоего последнего сообщения...
|
17.08.2007, 11:53 | #12 |
With best regards
Участник клуба
Регистрация: 20.04.2007
Сообщений: 1,448
|
Gauge1.Progress имеет тип Integer, 32-бит, со знаком.
Т.е. его диапазон = от –2147483648..до 2147483647 (2^32)-1=4294967295 - всего, из них половина положительных, половина отрицательных. Есть еще тип Cardinal 0..4294967295 32-бит, без знака. Это я к тому, что 700 тыс. - это не предел. Пишем в Delphi слово INTEGER наводим на него указатель, и жмем F1. ////////////// Ускорить? А насколько медленно работает?
Life is too short, play more...
Как правильно задавать вопросы |
17.08.2007, 12:01 | #13 |
Александр
Форумчанин
Регистрация: 15.08.2007
Сообщений: 112
|
Насчет предела я только предположил, потому что с маленькими файлами все в шоколаде, а с большими процесс не отображается, вот я и подумал, что gauge может иметь какие-либо ограничения...
А как вставил в код Application.ProcessMessages, программа стала грузить данные из файла раз в 100 медленнее... |
17.08.2007, 12:03 | #14 |
With best regards
Участник клуба
Регистрация: 20.04.2007
Сообщений: 1,448
|
Советую почитать про Application.ProcessMessages
Life is too short, play more...
Как правильно задавать вопросы |
17.08.2007, 12:24 | #15 |
Александр
Форумчанин
Регистрация: 15.08.2007
Сообщений: 112
|
ok, сапибо за помощь!
|
17.08.2007, 12:44 | #16 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Александр, я бы на твоем месте заменил процедуру чтения из файла на что-нить побыстрее типа TFileStream.
I'm learning to live...
|
17.08.2007, 14:12 | #17 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Раз медленнее стало значит отрисовка графика затормаживает. Тут надо выбрать одно из двух - либо не показывать прогресс, либо в цикле рисовать график в памяти а уже после цикла отобразить.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
17.08.2007, 15:28 | #18 | |
Форумчанин
Регистрация: 20.06.2007
Сообщений: 270
|
Цитата:
procedure TForm1.Button2Click(Sender: TObject); var i: integer; MyFile: TStringList; begin //Загружаю файл в операвтиную память в переменную MyFile MyFile.LoadFromFile(OpenDialog1.Fil eName); i:=0 ProgressBar1.Min:=0 ProgressBar1.Max:=MyFile.Count; for i:=ProgressBar1.Min to ProgressBar1.Max do begin ProgressBar1.Position:=i; //а дальше обрабатываею i-тую строку из MyFile ... end; end; Я думаю, так должно быть быстрее потому как прога будет работать с оперативкой, а не с диском, как у тебя. А прогрессбар я запускал на перебор БД с 5 000 000 записей и никаких проблем не было. PS: кстати, прорисовка графики занимает действительно много времени. Поэтому график лучше строить на невидимой форме, а по окончании построения сделать ее видимой. PPS: В свое время при написании текстового редактора я столкнулся, с тем, что процедура поиска, написанная мною, стала глючить на файлах большого объема. Тогда я для переменной, указывающей позицию в строке назначил вместо типа integer тип cardinal (целое без знака). Помогло
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько? (с) Библия. Вольный перевод с древнееврейского. |
|
17.08.2007, 15:28 | #19 | |
Форумчанин
Регистрация: 20.06.2007
Сообщений: 270
|
Цитата:
procedure TForm1.Button2Click(Sender: TObject); var i: integer; MyFile: TStringList; begin //Загружаю файл в операвтиную память в переменную MyFile MyFile.LoadFromFile(OpenDialog1.Fil eName); i:=0 ProgressBar1.Min:=0 ProgressBar1.Max:=MyFile.Count; for i:=ProgressBar1.Min to ProgressBar1.Max do begin ProgressBar1.Position:=i; //а дальше обрабатываею i-тую строку из MyFile ... end; end; Я думаю, так должно быть быстрее потому как прога будет работать с оперативкой, а не с диском, как у тебя. А прогрессбар я запускал на перебор БД с 5 000 000 записей и никаких проблем не было. PS: кстати, прорисовка графики занимает действительно много времени. Поэтому график лучше строить на невидимой форме, а по окончании построения сделать ее видимой. PPS: В свое время при написании текстового редактора я столкнулся, с тем, что процедура поиска, написанная мною, стала глючить на файлах большого объема. Тогда я для переменной, указывающей позицию в строке назначил вместо типа integer тип cardinal (целое без знака). Помогло
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько? (с) Библия. Вольный перевод с древнееврейского. |
|
17.08.2007, 16:41 | #20 |
Александр
Форумчанин
Регистрация: 15.08.2007
Сообщений: 112
|
Спасибо, братцы! Век не забуду!
Есть всё же добрые люди на свете... |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вопрос про Gauge | Diamand | Компоненты Delphi | 7 | 28.11.2013 13:11 |
ProgressBar | Makarov | Компоненты Delphi | 3 | 04.02.2008 22:42 |
ProgressBar | Rahim1993 | Общие вопросы Delphi | 10 | 20.01.2008 21:28 |
ProgressBar | pentiumForever | Компоненты Delphi | 2 | 07.09.2007 13:33 |