![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как нормально следить за счётчиком!? [D6, WinXP]
Volf_555 © (2005-12-09 18:50:00)Вобщем - суть в слудующем:
Есть прога, смысл работы какой заключается в удалении повторяющихся строк. Если работать с мелкими файлами - проблем не возникает - всё обрабатывается сравнительно быстро.
Но если обрабатывать огромные файлы, то можно подумать что программа полностью зависла и её надо тэрминэйтить...
Для этих целей я создал вторую форму, которая должна во время обработки огромного файла показывать номер значения, обрабатываемый в данный момент+диаграмма, по которой будет видно сколько процентов уже обработано.
Но когда я запускаю обработчик большого файла, то появляется вторая форма без компонентов и всё зависает... И, соответственно, не видно обрабатываемое значение + проценты
Вот код:
with form2 do
begin
Show;
Label5.Caption:= 'Файл: '+ExtractFileName(OpenDialog1.FileName);
Label3.Caption:=IntToStr(memo2.Lines.Count);
gauge1.MaxValue:=memo2.Lines.Count;
end;
if form2.Showing then
begin
for a:=0 to memo2.Lines.Count-1 do
for a1:=0 to memo2.Lines.Count-1 do
begin
if memo2.Lines.Strings[a1]=memo2.Lines.Strings[a] then
memo2.Lines.Delete(a1);
form2.label4.Caption:=IntToStr(a);
end;
end;
Как подскажите решить проблему?
ЗЫ: существуют же ведь программы, в которых эта возможность реализована!
Volf_555 (2005-12-09 19:09:00) [1]Thank - работает!
Плохиш (2005-12-09 19:05:00) [2]В цикл вставь.
MU (2005-12-09 19:04:00) [3]в цикл еще вставь
Volf_555 (2005-12-09 19:03:00) [4]Написал так:
with form2 do
begin
Show;
Label5.Caption:= 'Файл: '+ExtractFileName(OpenDialog1.FileName);
Label3.Caption:=IntToStr(memo2.Lines.Count);
gauge1.MaxValue:=memo2.Lines.Count;
end;
Application.ProcessMessages
if form2.Showing then
begin
for a:=0 to memo2.Lines.Count-1 do
for a1:=0 to memo2.Lines.Count-1 do
begin
if memo2.Lines.Strings[a1]=memo2.Lines.Strings[a] then
memo2.Lines.Delete(a1);
form2.label4.Caption:=IntToStr(a);
end;
end;
В таком случае вторая форма показывается, но значения меняться не хотят. И всё-равно идёт подвисание как главной, так и второй форм
Плохиш (2005-12-09 19:02:00) [5]
> Volf_555 (09.12.05 18:59) [2]
> А подробней?
Хочешь, чтобы я за тебя F1 нажимал и справку сюда постил? Если модератор разрешение даст, скопирую сюда описание из моейсправки, правда ты там всё-равно ничего не поймёшь.
Volf_555 (2005-12-09 18:59:00) [6]А подробней?
Плохиш (2005-12-09 18:52:00) [7]Application.ProcessMessages