我可以使用通配符来比较字符串吗?
Can I use wildcards to compare strings?
我有一组文件:
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
是 '*.*'
以包含所有文件。
然而以上returns所有文件。
所以我的问题是如何从搜索中排除这些文件?
Delphi 为此提供单元 System.Masks
。这里合适的函数是MatchesMask:
if MatchesMask(sr.Name, '*a.*') then
我有一组文件:
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
是 '*.*'
以包含所有文件。
然而以上returns所有文件。
所以我的问题是如何从搜索中排除这些文件?
Delphi 为此提供单元 System.Masks
。这里合适的函数是MatchesMask:
if MatchesMask(sr.Name, '*a.*') then