Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо