列出一个文件夹下所有的文件
function FkFileListGet(vMask, vFolder: string; vSub: Boolean): TStringList;
var
// sTemp,sProc,sResult:STRING;
k, m: Integer;
srList: TSearchRec;
DirList, Filelist, TempList: TStringList;
oFound: Boolean;
intOldAttr: integer;
fileSearch: Integer;
begin
// 建立一个文件夹列表
DirList := TStringList.Create;
FileList := TStringList.Create;
TempList := TStringList.Create;
vFolder := TRIM(vFolder);
if vFolder[length(vFolder)] <> '\' then
vFolder := vFolder + '\';
// 生成文件夹列表
oFound := FindFirst(vFolder + '*.*', (faDirectory + faHidden + faSysFile +
faReadOnly), srList) = 0;
while oFound do
begin
if (DirectoryExists(vFolder + srList.Name) and (srList.Name <> '.') and
(srList.Name <> '..')) then
begin
DirList.Add(vFolder + srList.Name);
end;
oFound := (FindNext(srList) = 0);
end;
FindClose(srList);
//查找当前目录的文件
oFound := FindFirst(vFolder + vMask, (faAnyFile + faHidden + faSysFile +
faReadOnly), srList) = 0;
while oFound do
begin
if FileExists(vFolder + srList.Name) then
begin
intOldAttr := FileGetAttr(vFolder + srList.Name);
FileSetAttr(vFolder + srList.Name, 0);
fileSearch := FileOpen(vFolder + srList.Name, fmOpenReadWrite);
if fileSearch > 0 then
begin
FileClose(fileSearch);
FileSetAttr(vFolder + srList.Name, intOldAttr);
FileList.Add(vFolder + srList.Name);
end;
end;
oFound := (FindNext(srList) = 0);
end;
FindClose(srList);
//查找列表的子目录
if vSub then
begin
for k := 0 to DirList.Count - 1 do
begin
TempList := FkFileListGet(vMask, DirList[k], vSub);
for m := 0 to TempList.Count - 1 do
FileList.Add(TempList]);
end;
end;
DirList.Free;
TempList.Free;
Result := FileList;
end;
【 在 steelg (边城) 的大作中提到: 】
: 我现在的做法是:
: 1、定义一个tdirectory 变量
: 2、用location定位文件夹的位置
: ...................