delphi 获取根目录下的文件名及子目录下的文件名
我想用selectDirectory的方法选择一个目录然后搜索这个目录下的图片文件文件的格式支持多种pngjpg等我在网上搜的方法要么搜不到子目录下的文件要么就是死循环现...
我想用selectDirectory的方法选择一个目录 然后搜索这个目录下的图片文件 文件的格式支持多种 png jpg等 我在网上搜的方法 要么搜不到子目录下的文件 要么就是死循环 现在求一个不是复制别人的解答 求给答案
展开
1个回答
展开全部
给一个通用过程,直接调用,运行看是不是你想要的效果。
procedure GetChildFileList(AStrings: TStrings; ASourFile,
FileName: string); // 查找子目录
// AStrings存放路径, ASourceFile要查找的目录,FileName搜索的文件类型 若指定类型,则'*.jpg'or '*.png'
var
sour_path, sour_file: string;
TmpList: TStringList;
FileRec, subFileRec: TSearchrec;
i: Integer;
begin
if copy(ASourFile, Length(ASourFile), 1) <> '\' then
sour_path := IncludeTrailingPathDelimiter(Trim(ASourFile)) // 在路径后面加上反斜杠
else
sour_path := trim(ASourFile);
sour_file := FileName;
if not DirectoryExists(sour_path) then
begin
AStrings.Clear;
exit;
end;
TmpList := TStringList.Create;
TmpList.Clear;
if FindFirst(sour_path + '*.*', faAnyfile, FileRec) = 0 then
repeat
if ((FileRec.Attr and faDirectory) <> 0) then
begin
if ((FileRec.Name <> '.') and (FileRec.Name <> '..')) then
GetChildFileList(AStrings, sour_path + FileRec.Name + '\', sour_file);
end;
until FindNext(FileRec) <> 0;
FindClose(FileRec);
if FindFirst(sour_path + FileName, faAnyfile, subFileRec) = 0 then
repeat
if ((subFileRec.Attr and faDirectory) = 0) then
TmpList.Add(sour_path + subFileRec.Name);
until FindNext(subFileRec) <> 0;
FindClose(subFileRec);
for i := 0 to TmpList.Count - 1 do
AStrings.Add(TmpList.Strings[i]);
TmpList.Free;
end;
调用:
procedure TForm2.SpeedButton5Click(Sender: TObject);
begin
GetChildFileList(ListBox1.Items, 'D:\Wyp\', '*.jpg'); // 目录自己定
GetChildFileList(ListBox1.Items, 'D:\Wyp\', '*.png');
end;
这里是将查找的目录存放在ListBox里的。
在加载List时,由于Item太多,所以有一定的延时,而不是卡死。
希望能帮到你。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询