![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
label и form
Батя © (2006-07-28 17:48:00)всем здрасти!У меня вот какая проблема возникла. Я организовал поис файлов на диске и сталкнулся с проблемой.
procedure TForm2.FindFile(Dir:String);
Var SR:TSearchRec;
FindRes:Integer;
begin
FindRes:=FindFirst(Dir+'*.*',faAnyFile,SR);
While FindRes=0 do
begin
if ((SR.Attr and faDirectory)=faDirectory) and
((SR.Name='.')or(SR.Name='..')) then
begin
FindRes:=FindNext(SR);
Continue;
end;
if ((SR.Attr and faDirectory)=faDirectory) then // если найден каталог, то
begin
FindFile(Dir+SR.Name+'\'); // входим в процедуру поиска с параметрами текущего каталога + каталог, что мы нашли
FindRes:=FindNext(SR); // после осмотра вложенного каталога мы продолжаем поиск в этом каталоге
Continue; // продолжить цикл
end;
Label1.Caption:=SR.Name
FindRes:=FindNext(SR);
label1.Caption:=SR.Name
end;
FindClose(SR);
end;
Но припопытке его проиграть получаетя эффект зависания, а после в Label1 отображается только
последний найденный файл. Я бы так и оставил думал не поправимо. Но решил написать так
procedure TForm2.FindFile(Dir:String);
Var SR:TSearchRec;
FindRes:Integer;
begin
FindRes:=FindFirst(Dir+'*.*',faAnyFile,SR);
While FindRes=0 do
begin
if ((SR.Attr and faDirectory)=faDirectory) and
((SR.Name='.')or(SR.Name='..')) then
begin
FindRes:=FindNext(SR);
Continue;
end;
if ((SR.Attr and faDirectory)=faDirectory) then // если найден каталог, то
begin
FindFile(Dir+SR.Name+'\'); // входим в процедуру поиска с параметрами текущего каталога + каталог, что мы нашли
FindRes:=FindNext(SR); // после осмотра вложенного каталога мы продолжаем поиск в этом каталоге
Continue; // продолжить цикл
end;
Label1.Caption:=SR.Name
FindRes:=FindNext(SR);
form2.Caption:=SR.Name
end;
FindClose(SR);
end;
И удивился в form2.Caption меняется, безусловно достаточно быстро, но меняется.
Но в form2.Caption мне не надо мне надо в label. Я даже пробовал sleep(1000) - не помогает.
Помогите кто чем может. Спасибо!
IceBeerg (2006-07-28 18:39:00) [1]
> мож, я чегоне понял, но это имхо лишнее
Это обход вложенных каталогов (подкаталогов)
Desdechado (2006-07-28 18:31:00) [2]мож, я чегоне понял, но это имхо лишнее
FindRes:=FindNext(SR); // после осмотра вложенного каталога мы продолжаем поиск в этом каталоге
Continue; // продолжить цикл
Батя (2006-07-28 18:30:00) [3]сенкю алл!
Мефисто (2006-07-28 18:17:00) [4]sleep(1000) - задержка в милисекундах
Батя (2006-07-28 18:08:00) [5]
> можно.
а как
Ketmar (2006-07-28 18:07:00) [6]можно.
Батя (2006-07-28 17:58:00) [7]
> Поставь в цикле Application.ProcessMessages
Спасибо реально помагло, а нельза ли не много приторозить процесс, т.е. что бы имена можно было разглядеть.
Desdechado (2006-07-28 17:50:00) [8]Поставь в цикле Application.ProcessMessages