请问,如何在FindFirst这个函数中对多种后缀名的文件进行搜索?(50分)

  • 主题发起人 主题发起人 星幻子
  • 开始时间 开始时间

星幻子

Unregistered / Unconfirmed
GUEST, unregistred user!
请看
var
FindResult: Integer;
FSearchRec: TSearchRec;
begin
FindResult := FindFirst(Path+'*.wav',faAnyFile+faHidden+
faSysFile+faReadOnly,FSearchRec)

end;

这样只能搜索后缀名是wav的文件,请问如何让wav和mp3一起搜索出来呢?
没多少分请各位大哥大姐帮帮忙
 
那你用
FindResult := FindFirst(Path+'*.*',faAnyFile+faHidden+
faSysFile+faReadOnly,FSearchRec)

然后对搜索结果进行筛选好了。

procedure GetFileList(const AFilePath: string);
var
tmpPath: string;
fpath: String;
srec: TSearchRec;
begin
if Not DirectoryExists(AFilePath) then
Exit;
tmpPath := AFilePath;
if AFilePath[length(AFilePath)] = '/' then
tmpPath := Copy(AFilePath, 1, length(AFilePath)-1);
fpath := tmpPath + '/*.*';
if 0 = FindFirst(fpath, faAnyFile, srec) then
begin
if (srec.Name<>'.')and(srec.Name<>'..') then
begin
if (srec.Attr and faDirectory)=faDirectory then
begin
GetFileList(AFilePath + '/' + srec.Name);
end
else
begin
if (LowerCase(ExtractFileExt(tmpPath + '/' + srec.Name)) = '.wav')
or (LowerCase(ExtractFileExt(tmpPath + '/' + srec.Name)) = '.mp3') then
ListBox1.Items.Add(tmpPath + '/' + srec.Name);
end;
end;

while FindNext(srec)=0 do
begin
if (srec.Name<>'.')and(srec.Name<>'..') then
if (srec.Attr and faDirectory)=faDirectory then
begin
GetFileList(tmpPath + '/' + srec.Name)
end
else
begin
if (LowerCase(ExtractFileExt(tmpPath + '/' + srec.Name)) = '.wav')
or (LowerCase(ExtractFileExt(tmpPath + '/' + srec.Name)) = '.mp3') then
ListBox1.Items.Add(tmpPath + '/' + srec.Name);
end;
end;
end;
FindClose(srec);
end;
 
写成 '*.*' 然后findnext的时候比较 .
 
if (LowerCase(ExtractFileExt(tmpPath + '/' + srec.Name)) = '.wav')
or (LowerCase(ExtractFileExt(tmpPath + '/' + srec.Name)) = '.mp3') then
====>
if pos(ExtractFileExt(srec.Name),后缀字符串):>0 then
//……
 
如果你要递归搜索子目录的话,就用*.*,然后在判断SRec.Name。如果仅仅搜索当前目录(不包括字目录)可写成下面这样即可:
FindResult := FindFirst(Path+'*.wav;*.mp3;*.wma',faAnyFile+faHidden+
faSysFile+faReadOnly,FSearchRec);
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部