delphi - 我可以使用通配符来比较字符串吗?

标签 delphi wildcard delphi-10.3-rio

我有一组文件:

001.txt
001a.txt
002.txt 
002a.txt
...

我正在尝试使用以下代码排除以a结尾的项目,例如001a.txt

PROCEDURE TForm1.FindFiles(StartDir, FileMask: STRING);
VAR
  sr: TSearchRec;
  IsFound: Boolean;
BEGIN
  IsFound := FindFirst(StartDir + FileMask, faAnyFile - faDirectory, sr) = 0;
  WHILE IsFound DO
  BEGIN    
    if sr.Name <> '*a.*' then
      gFiles.add(StartDir + sr.Name);

    IsFound := FindNext(sr) = 0;
  END;
  FindClose(sr);
END;

传递给此过程的 FileMask'*.*' 以包含所有文件。

但是上面返回所有文件。

所以我的问题是如何从搜索中排除这些文件?

最佳答案

Delphi 为此提供了 System.Masks 单元。这里合适的函数是MatchesMask :

if MatchesMask(sr.Name, '*a.*') then

关于delphi - 我可以使用通配符来比较字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62170689/

相关文章:

Delphi 10.3.1 编译器生成的代码在编译为 64 位时会发出异常

arrays - 引用类(class)流程

delphi - 从代码中关闭 BDE

delphi - 对于 Delphi IDE,代码编辑器中的函数列表与 Visual Studio 中一样

java - 创建无界和有界通配符类型数组之间的区别?

git - 在 git log 中使用路径通配符

delphi - 如何在 Delphi COM 服务器应用程序中从 Getref 获取的指针调用 VBscript 函数

xml - 当我序列化为字符串时,为什么 TXmlDocument 会省略编码?

python - 通过文件名通配符打开文件

delphi - 代码编辑器无法识别俄语字符