delphi 获取根目录下的文件名及子目录下的文件名

我想用selectDirectory的方法选择一个目录然后搜索这个目录下的图片文件文件的格式支持多种pngjpg等我在网上搜的方法要么搜不到子目录下的文件要么就是死循环现... 我想用selectDirectory的方法选择一个目录 然后搜索这个目录下的图片文件 文件的格式支持多种 png jpg等 我在网上搜的方法 要么搜不到子目录下的文件 要么就是死循环 现在求一个不是复制别人的解答 求给答案 展开
 我来答
随云home
2015-11-24 · 超过10用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:21.4万
展开全部
给一个通用过程,直接调用,运行看是不是你想要的效果。
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太多,所以有一定的延时,而不是卡死。

希望能帮到你。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式