///<summary>遍历文件</summary>
///<param>AList: 遍历所得文件列表,全路径</param>
///<param>APath: 遍历目录</param>
///<param>AExt: 遍历文件扩展名</param>
procedure gFileList(AList: TStringList; const APath, AExt: String);
var
str: String;
sch:TSearchrec;
begin
if AList = nil then Exit;
AList.Clear;
str := Trim(APath);
if RightStr(str, 1) <> '\' then
str := str + '\';
if not DirectoryExists(str) then Exit;
if SysUtils.FindFirst(str + '*', faAnyfile, sch) = 0 then
begin
repeat
Application.ProcessMessages;
if ((sch.Name = '.') or (sch.Name = '..')) then Continue;
if DirectoryExists(str + sch.Name) then
gFileList(AList, str + sch.Name, AExt)
else begin
if (UpperCase(ExtractFileExt(str + sch.Name)) = UpperCase(AExt)) or (AExt='.*') then
AList.Add(str + sch.Name);
end;
until FindNext(sch) <> 0;
SysUtils.FindClose(sch);
end;
end;