Форум: "WinAPI";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];
ВнизКак нормально следить за счётчиком!? Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c