Вниз
Скачать: CL | DM;

поиск файлов   Найти похожие ветки 

 
Nagano   (2006-08-01 12:53) [0]

Как можно найти все файлы с определенным расширением в определенной папке и всех ее подпапках?


 
Джо ©   (2006-08-01 12:54) [1]

FindFirst, FindNext, FindClose. Поищи по форуму. Тут чуть ли не каждую неделю готовый код выкладывают.


 
Сергей М. ©   (2006-08-01 13:05) [2]

см. TOpenDialog + св-во Filter + событие OnIncludeItem


 
Darvin ©   (2006-08-01 17:16) [3]

Джо ©   (01.08.06 12:54) [1] + рекурсия по вложенным папкам


 
Ivolg ©   (2006-08-01 18:15) [4]

Вот неплохой алгоритм поиска:

Procedure TForm1.FindRecursive( Const path: String; Const mask: String);
Var
fullpath: String;
 Function Recurse( Var path: String; Const mask: String ): Boolean;
   Var
     SRec: TSearchRec;
     retval: Integer;
     oldlen: Integer;
   Begin
     Recurse := True;
     oldlen := Length( path );
     retval := FindFirst( path+mask, faAnyFile, SRec );
     While retval = 0 Do Begin
       If (SRec.Attr and (faDirectory or faVolumeID)) = 0 Then
       ListBox1.items.Add(path+srec.name);
       retval := FindNext( SRec );
     End;
     FindClose( SRec );
     If not Result Then Exit;
     retval := FindFirst( path+"*.*", faDirectory, SRec );
     While retval = 0 Do Begin
       If (SRec.Attr and faDirectory) <> 0 Then
         If (SRec.Name <> ".") and (SRec.Name <> "..") Then Begin
           path := path + SRec.Name + "\";
           If not Recurse( path, mask ) Then Begin
     
             Result := False;
             Break;
           End;
           Delete( path, oldlen+1, 255 );
         End;
       retval := FindNext( SRec );
     End;
     FindClose( SRec );
   End; { Recurse }
 Begin
   If path = "" Then
     GetDir(0, fullpath)
   Else
     fullpath := path;
   If fullpath[Length(fullpath)] <> "\" Then
     fullpath := fullpath + "\";
   If mask = "" Then
     Recurse( fullpath, "*.*" )
   Else
     Recurse( fullpath, mask );
 End;


 
StriderMan ©   (2006-08-01 18:21) [5]


>   retval := FindFirst( path+mask, faAnyFile, SRec );
>      While retval = 0 Do Begin
>        If (SRec.Attr and (faDirectory or faVolumeID)) =
> 0 Then
>        ListBox1.items.Add(path+srec.name);
>        retval := FindNext( SRec

здесь явно можно обойтись без retval



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
3-1150304770
vvQuad
2006-06-14 21:06
2006.08.20
Перенос БД на другой комп


2-1154347864
Dysan
2006-07-31 16:11
2006.08.20
русские буквы в XML файле вызывают ошибку!


1-1152025091
Piter
2006-07-04 18:58
2006.08.20
Непонятная работа FindFirst / FindNext


6-1143505652
Sergio77
2006-03-28 04:27
2006.08.20
Запрет доступа


15-1153553033
Pazitron_Brain
2006-07-22 11:23
2006.08.20
Посоветуйте КПК




   Наверх