我在目录和子目录中有bmp文件。 例如:\ fileserver \ dir + subdir
bmp文件名例如是dddklk85243ggg.bmp
问题:
我需要通过85243搜索文件,当找到第一个然后将其放在图像上时。
我知道根据文件名找到文件:
uses FindFile;
...
procedure Tform1.Button2Click(Sender: TObject) ;
var DFile : TFindFile;
begin
DFile := TFindFile.Create(nil) ;
try
DFile.FileAttr := [ffaAnyFile];
DFile.InSubFolders := True;
DFile.Path := ExtractFilePath(ParamStr(0)) ;
DFIle.FileMask := '*.bmp';
Memo1.Lines := DFile.SearchForFiles;
finally
DFile.Free;
end;
end;
但如何检查文件名是否包含某些字符串?
答案 0 :(得分:0)
您可以使用以下内容:
{: Search files in a directory; You can especify a mask for files.
Optionaly you can especify recursively=True for subdirectories.
StartDir Folder ti serach.
FileMask Mask for files.
Recursively if you want searcjh on subdirectories.
FilesList TStringList with names of files (path).
}
procedure FindFiles(StartDir, FileMask: string;
recursively: boolean; var FilesList: TStringList);
const
MASK_ALL_FILES = '*.*';
CHAR_POINT = '.';
var
SR: TSearchRec;
DirList: TStringList;
IsFound: Boolean;
i: integer;
begin
if (StartDir[length(StartDir)] <> '\') then begin
StartDir := StartDir + '\';
end;
// Crear la lista de ficheros en el dir. StartDir (no directorios!)
// Start with the search
IsFound := FindFirst(StartDir + FileMask,
faAnyFile - faDirectory, SR) = 0;
// MIentras encuentre
// while found files...
while IsFound do begin
FilesList.Add(StartDir + SR.Name);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);
// Recursivo?
if (recursively) then begin
// Build a list of subdirectories
DirList := TStringList.Create;
// proteccion
try
IsFound := FindFirst(StartDir + MASK_ALL_FILES,
faAnyFile, SR) = 0;
while IsFound do begin
if ((SR.Attr and faDirectory) <> 0) and
(SR.Name[1] <> CHAR_POINT) then begin
DirList.Add(StartDir + SR.Name);
IsFound := FindNext(SR) = 0;
end; // if
end; // while
FindClose(SR);
// Scan the list of subdirectories
for i := 0 to DirList.Count - 1 do begin
FindFiles(DirList[i], FileMask, recursively, FilesList);
end;
finally
DirList.Free;
end;
end;
end;
您可以通过以下方式调用该程序:
var
filesList:TStringList;
begin
...
FindFiles('\fileserver\dir\' + subdir, '*85243*.bmp', True, filesList);
...
问候。