You'll need to write your own parser. This might be one possible implementation:
[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;
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…