两个delphi下遍历指定目录下指定类型文件的函数

2008-04-09 04:23:19来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

by meiqingsong(阿飛)

// ================================================================
// 遍历某个文件夹下某种文件,
// 使用说明
// ?? _GetFileList(ListBox1.Items,''''c:\*.doc'''');
// _GetFileList(MyTStringList,''''c:\*.exe'''');
// ================================================================
procedure TForm1._GetFileList(AStrings: TStrings ; ASourFile: string);
var sour_path,sour_file: string;
TmpList:TStringList;
FileRec:TSearchrec;
begin

sour_path:=ExtractFilePath(ASourFile);
sour_file:=ExtractFileName(ASourFile);

if not DirectoryExists(sour_path) then
begin
AStrings.Clear;
exit;
end;

TmpList:=TStringList.Create;
TmpList.Clear;

if FindFirst(sour_path sour_file,faAnyfile,FileRec) = 0 then
repeat
if ((FileRec.Attr and faDirectory) = 0) then
begin
TmpList.Add(sour_path FileRec.Name)
end;
until FindNext(FileRec)<>0;

SysUtils.FindClose(FileRec);

AStrings.Assign(TmpList);

TmpList.Free;
end;

// ================================================================
// 遍历某个文件夹及子文件夹下某种文件,
// 使用说明
// ?? _GetFileList(ListBox1.Items, ''''c:\'''', ''''*.doc'''');
// _GetFileList(MyTStringList, ''''c:\'''', ''''*.exe'''');
// ================================================================
procedure _GetFileList(AStrings: TStrings; ASourFile,
FileName: string);
var sour_path,sour_file: string;
TmpList:TStringList;
FileRec, subFileRec:TSearchrec;
i: Integer;
begin
if rightStr(trim(ASourFile), 1) <> ''''\'''' then
sour_path :=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
_GetFileList(AStrings, sour_path FileRec.Name ''''\'''', sour_file);
end
else
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;

until FindNext(FileRec)<>0;

SysUtils.FindClose(FileRec);
for i := 0 to TmpList.Count -1 do
AStrings.Add(TmpList.Strings[i]);

TmpList.Free;
end;

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:改变文件夹图标

下一篇:Delphi7 从子线程中发送消息到主线程触发事件执行