gpt4 book ai didi

string - 在 Inno Setup 中使用 Pascal 脚本从配置文件中查找和读取特定字符串

转载 作者:行者123 更新时间:2023-12-05 01:09:24 48 4
gpt4 key购买 nike

我有很长的配置文件,我需要从文件中提取特定的字符串。
我想提取/读取的是特定数字位置的 InstallDir,例如为 20540。

我知道如何在 INI 或 XML 中查找字符串,但无法处理这种形式的文件。

显示结构的文件片段:

"212280"
{
"InstallDir" "D:\\XYZ\\stu\\opr"
"UpdateKBtoDL" "0"
"HasAllLocalContent" "1"
"UpToDate" "1"
"DisableAutoUpdate" "0"
}
"20540"
{
"UpdateKBtoDL" "0"
"InstallDir" "C:\\ABC\\def\\ghi"
"HasAllLocalContent" "1"
"UpToDate" "1"
"maintenance_time" "1339663134"
"DisableAutoUpdate" "0"
}
"4560"
{
"UpdateKBtoDL" "0"
"HasAllLocalContent" "0"
"UpToDate" "0"
"InstallDir" ""
}

最佳答案

您需要编写自己的解析器。这可能是一种可能的实现:

[Code]
function GetInstallDir(const FileName, Section: string): string;
var
S: string;
DirLine: Integer;
LineCount: Integer;
SectionLine: Integer;
Lines: TArrayOfString;
begin
Result := '';
S := '"' + Section + '"'; // AddQuotes is broken somehow...
if LoadStringsFromFile(FileName, Lines) then
begin
LineCount := GetArrayLength(Lines);
for SectionLine := 0 to LineCount - 1 do
if Trim(Lines[SectionLine]) = S then
begin
if (SectionLine < LineCount) and (Trim(Lines[SectionLine + 1]) = '{') then
for DirLine := SectionLine to LineCount - 1 do
begin
if (Pos('"InstallDir"', Lines[DirLine]) > 0) and
(StringChangeEx(Lines[DirLine], '"InstallDir"', '', True) > 0) then
begin
S := RemoveQuotes(Trim(Lines[DirLine]));
StringChangeEx(S, '\\', '\', True);
Result := S;
Exit;
end;
if Trim(Lines[DirLine]) = '}' then
Exit;
end;
Exit;
end;
end;
end;

procedure InitializeWizard;
begin
MsgBox(GetInstallDir('d:\File.almostjson', '20540'), mbInformation, MB_OK);
end;

关于string - 在 Inno Setup 中使用 Pascal 脚本从配置文件中查找和读取特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15789494/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com