![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
поиск файлов
Nagano © (2006-08-01 12:53:00)Как можно найти все файлы с определенным расширением в определенной папке и всех ее подпапках?
StriderMan (2006-08-01 18:21:00) [1]
> 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
Ivolg (2006-08-01 18:15:00) [2]Вот неплохой алгоритм поиска:
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;
Darvin (2006-08-01 17:16:00) [3]Джо © (01.08.06 12:54) [1] + рекурсия по вложенным папкам
Сергей М. (2006-08-01 13:05:00) [4]см. TOpenDialog + св-во Filter + событие OnIncludeItem
Джо (2006-08-01 12:54:00) [5]FindFirst, FindNext, FindClose. Поищи по форуму. Тут чуть ли не каждую неделю готовый код выкладывают.