Главная страница
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.067 c
15-1153719134
Ega23
2006-07-24 09:32
2006.08.20
С Днём рождения! 24 июля


1-1151975555
dwar
2006-07-04 05:12
2006.08.20
indy 9.0.18 проблеммы установки


1-1151846727
Mictian
2006-07-02 17:25
2006.08.20
Генерирование пары независимых равномерно распределенных чисел


2-1154374453
rem2
2006-07-31 23:34
2006.08.20
Как остановить выполнение процедуры/функции?


15-1153822612
rll-progr
2006-07-25 14:16
2006.08.20
ddeclientitem