Inno setup Inno设置,如何在多个文件中搜索特定字符串?

Inno setup Inno设置,如何在多个文件中搜索特定字符串?,inno-setup,pascalscript,Inno Setup,Pascalscript,我想在几个文件中搜索特定字符串。 e、 g.oem1.infoem2.infoem5.infoem8.inf。 所有目标文件名的格式都相同-oem*.inf 我想在这些文件中搜索特定的子字符串(例如“1234”中的“1234”。 我已经提到了,但它和我的问题有点不同 我现在可以获得所有路径: Var 找到的文件:整数; FindRec:TFindRec; Stemp:字符串; 开始 找到的文件:=0; 如果FindFirst('C:\Path\oem*.inf',FindRec),则开始 尝试

我想在几个文件中搜索特定字符串。
e、 g.
oem1.inf
oem2.inf
oem5.inf
oem8.inf

所有目标文件名的格式都相同-
oem*.inf

我想在这些文件中搜索特定的子字符串(例如
“1234”
中的
“1234”

我已经提到了,但它和我的问题有点不同


我现在可以获得所有路径:

Var
找到的文件:整数;
FindRec:TFindRec;
Stemp:字符串;
开始
找到的文件:=0;
如果FindFirst('C:\Path\oem*.inf',FindRec),则开始
尝试
重复
如果FindRec.Attributes和FILE_ATTRIBUTE_DIRECTORY=0,则
开始
temp:=“C:\Path\”+FindRec.Name;
MsgBox(温度、MB信息、MB_正常);
FilesFound:=FilesFound+1;
结束;
直到没有FindNext(FindRec);
最后
FindClose(FindRec);
结束;
结束;
MsgBox(IntToStr(FilesFound)+“在系统目录中找到文件”,
MB信息,MB_OK);
结束;


我解决了这个问题。谢谢马丁和肯

Var
FindRec:TFindRec;
I:整数;
标签:字符串;
行:字符串;
文件行:TStringList;
开始
如果FindFirst('C:\PATH\oem*.inf',FindRec),则
开始
尝试
FileLines:=TStringList.Create;
标签:='ABA1234';
重复
如果FindRec.Attributes和FILE_ATTRIBUTE_DIRECTORY=0,则
开始
FileLines.LoadFromFile('C:\PATH\'+FindRec.Name);
对于I:=0到文件行。计数-1 do
开始
行:=文件行[I];
如果(位置(标签、线)>0),则
MsgBox(温度、MB信息、MB_正常);
结束;
结束;
直到没有FindNext(FindRec);
最后
文件行。免费;
FindClose(FindRec);
结束;
结束;
结束;

@MartinPrikryl,我可以用“FileExists”来检查文件,但我不知道哪个.inf是最后一个,可能是oem35.inf或oem99.inf?我需要一个方法来获取所有oem*.inf路径或停止搜索最后一个路径。具体的文本部分,我不知道。也许有人可以提供一些建议。谢谢您不需要
文件存在
。您已经发布的代码告诉您找到了一个匹配
ome*.inf
的文件,当您到达最后一个文件时,
not FindNext(findRec)
将退出循环。我在下面发布代码,感谢Martin和KenYou,您可以将整个
for
循环替换为
if(Pos(Tag,FileLines.Text)>0)然后{found}
@MartinPrikryl谢谢,我还有一个问题(),你能看一下吗?