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

Вниз

label и form   Найти похожие ветки 

 
Батя   (2006-07-28 17:48) [0]

всем здрасти!У меня вот какая проблема возникла. Я организовал поис файлов на диске и сталкнулся с проблемой.

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) - не помогает.
Помогите кто чем может. Спасибо!


 
Desdechado ©   (2006-07-28 17:50) [1]

Поставь в цикле Application.ProcessMessages


 
Батя   (2006-07-28 17:58) [2]


> Поставь в цикле Application.ProcessMessages

Спасибо реально помагло, а нельза ли не много приторозить процесс, т.е. что бы имена можно было разглядеть.


 
Ketmar ©   (2006-07-28 18:07) [3]

можно.


 
Батя   (2006-07-28 18:08) [4]


> можно.

а как


 
Мефисто   (2006-07-28 18:17) [5]

sleep(1000) - задержка в милисекундах


 
Батя   (2006-07-28 18:30) [6]

сенкю алл!


 
Desdechado ©   (2006-07-28 18:31) [7]

мож, я чегоне понял, но это имхо лишнее
          FindRes:=FindNext(SR); // после осмотра вложенного каталога мы продолжаем поиск в этом каталоге
          Continue; // продолжить цикл


 
IceBeerg ©   (2006-07-28 18:39) [8]


> мож, я чегоне понял, но это имхо лишнее

Это обход вложенных каталогов (подкаталогов)



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

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

Наверх




Память: 0.48 MB
Время: 0.053 c
15-1153345052
Alert2006
2006-07-20 01:37
2006.08.20
Нужен чат


9-1132981739
rtyrt
2005-11-26 08:08
2006.08.20
Как определить поддерживается ли OpenGL аппаратно или нет?


15-1153798751
vajo
2006-07-25 07:39
2006.08.20
AMD и ATI объявили о слиянии


15-1153387859
Nic
2006-07-20 13:30
2006.08.20
Органайзеры, планировщики


1-1152005018
Kolan
2006-07-04 13:23
2006.08.20
Как связать менеджер настроек и объект?