Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.26;
Скачать: CL | DM;

Вниз

Как нормально следить за счётчиком!?   Найти похожие ветки 

 
Volf_555   (2005-12-09 18:50) [0]

Вобщем - суть в слудующем:

Есть прога, смысл работы какой заключается в удалении повторяющихся строк. Если работать с мелкими файлами - проблем не возникает - всё обрабатывается сравнительно быстро.

Но если обрабатывать огромные файлы, то можно подумать что программа полностью зависла и её надо тэрминэйтить...

Для этих целей я создал вторую форму, которая должна во время обработки огромного файла показывать номер значения, обрабатываемый в данный момент+диаграмма, по которой будет видно сколько процентов уже обработано.

Но когда я запускаю обработчик большого файла, то появляется вторая форма без компонентов и всё зависает... И, соответственно, не видно обрабатываемое значение + проценты

Вот код:

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;


Как подскажите решить проблему?
ЗЫ: существуют же ведь программы, в которых эта возможность реализована!


 
Плохиш ©   (2005-12-09 18:52) [1]

Application.ProcessMessages


 
Volf_555   (2005-12-09 18:59) [2]

А подробней?


 
Плохиш ©   (2005-12-09 19:02) [3]


> Volf_555   (09.12.05 18:59) [2]
> А подробней?

Хочешь, чтобы я за тебя F1 нажимал и справку сюда постил? Если модератор разрешение даст, скопирую сюда описание из моей справки, правда ты там всё-равно ничего не поймёшь.


 
Volf_555   (2005-12-09 19:03) [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;


В таком случае вторая форма показывается, но значения меняться не хотят. И всё-равно идёт подвисание как главной, так и второй форм


 
MU ©   (2005-12-09 19:04) [5]

в цикл еще вставь


 
Плохиш ©   (2005-12-09 19:05) [6]

В цикл вставь.


 
Volf_555   (2005-12-09 19:09) [7]

Thank - работает!



Страницы: 1 вся ветка

Текущий архив: 2006.02.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.058 c
11-1120535815
Fanny
2005-07-05 07:56
2006.02.26
Проблемы с динамическими массивами


2-1139534386
tester83
2006-02-10 04:19
2006.02.26
Excel


8-1127481102
Sergey_R
2005-09-23 17:11
2006.02.26
Глючный MPEGAudio


15-1139329402
БарЛог
2006-02-07 19:23
2006.02.26
Телевизор


3-1135950003
d1978
2005-12-30 16:40
2006.02.26
RxdbRichEdit и Popupmenu