使用FindFirst函数查找文件如何按掩码*.pas返回正确文件a.pas而不是类*.pas?掩码的e.pas~,f.pas_(100)

  • 主题发起人 主题发起人 dejoy
  • 开始时间 开始时间
D

dejoy

Unregistered / Unconfirmed
GUEST, unregistred user!
我要查找某个目录下的某类扩展名的文件,但使用FindFirst结果似乎有点扩大化了.比如我要查找*.pas类型文件文件,结果返回中包括了类似xx.pas~,xx.pas_这样的文件,我传入的掩码是*.pas,希望返回的正确结果是a.pas,b.pas,但不应包括c.pas~,d.pas_.但从返回值看似乎是应用了掩码*.pas*或*.pas?,结果不正确啊,请教应该如何返回对应的正确的掩码*.pas的文件.示例代码:procedure TForm1.btn1Click(Sender: TObject);var Search: TSearchRec; Result: Integer; dir, Mask: string; s: string;begin dir := 'c:/y/'; Mask := '*.pas'; s := Dir + Trim(Mask); Result := FindFirst(s, faAnyFile, Search); try while Result = 0 do begin if (Search.Attr and faDirectory) <> 0 then Result := FindNext(Search) else begin ShowMessage(Search.Name); Result := FindNext(Search); end; end; finally FindClose(Search); end;end;
 
干嘛不加个 if 判断下返回的 Search.Name是不是你想要的呢?[:(]我也没找到改参数的方法。
 
全字匹配
 
代码:
procedure TForm1.btn1Click(Sender: TObject);var  Search: TSearchRec;  Result: Integer;  dir, Mask: string;  s: string;begin  dir := 'c:/y/';  Mask := '*.pas';  s := Dir + Trim(Mask);  Result := FindFirst(s, faAnyFile, Search);  try    while Result = 0 do    begin      if (Search.Attr and faDirectory) <> 0 then        Result := FindNext(Search)      else      begin        if Extractfileext(Search.Name) = '.pas' then begin          ShowMessage(Search.Name);          Result := FindNext(Search);        end;      end;    end;  finally    FindClose(Search);  end;end;
 
多人接受答案了。
 
楼上的几位,经思索,在findfirst后加if来判断文件名是否匹配的思路是正确的,只是以上几位的方法上有所不妥.这儿的*.pas只是我的举例,这个掩码是不固定的也许是.aaa也是是.bbb,所以是没法固定在if中判断的.只有使用更通用的方法来判断文件名是否匹配.幸运的是,这样的函数及示例被我找到了,在CnPack中就有,在Gexperts中也找到了相关代码.谢谢楼上的几位.
 

Similar threads

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