[Setup]
AppVersion=1.5
AppName=My Prog
DefaultDirName=My Prog
OutputDir=.
[Files]
[Code]
procedure InitializeWizard;
var
FilePath, NewFileContent, svalue: string;
FileLines: TArrayOfString;
I, PosSubStr: Integer;
InLanguagesBlock: Boolean;
begin
FilePath := ExpandConstant('{src}\data.info');
LoadStringsFromFile(FilePath, FileLines);
InLanguagesBlock := False;
NewFileContent := '';
// Поиск и замена нужных строк
for I := 0 to GetArrayLength(FileLines) - 1 do
begin
// Проверяем строку "language":
if Pos('"language":', FileLines[I]) > 0 then
begin
PosSubStr := (Pos('"language":', FileLines[I]) + Length('"language":') + 1);
svalue := Trim(Copy(FileLines[I], PosSubStr, MaxInt));
// Удаляем окончание строки после запятой, если оно есть
if Pos(',', svalue) > 0 then
Delete(svalue, Pos(',', svalue), MaxInt);
// Заменяем значение
StringChangeEx(FileLines[I], svalue, '"Russian"', True);
end;
// Проверяем строку в блоке "languages"
if Pos('"languages": [', FileLines[I]) > 0 then
InLanguagesBlock := True;
if InLanguagesBlock then
begin
if Pos(']', FileLines[I]) > 0 then
InLanguagesBlock := False;
// Проверяем, является ли строка значением внутри блока "languages"
if InLanguagesBlock and (Pos('"', FileLines[I]) > 0) and (Pos('"languages": [', FileLines[I]) = 0) then
// Что бы не изменить лишнего '"*"'
if InLanguagesBlock and (Pos('"*"', FileLines[I]) = 0) then
begin
PosSubStr := Pos('"', FileLines[I]) + 1;
svalue := Trim(Copy(FileLines[I], PosSubStr, MaxInt));
if Pos('"', svalue) > 0 then
Delete(svalue, Pos('"', svalue), MaxInt);
StringChangeEx(FileLines[I], svalue, 'ru-RU', True);
end;
end;
// Пишем новое содержимое файла
NewFileContent := NewFileContent + FileLines[I] + #13#10;
end;
// Сохраняем обратно в файл
SaveStringToFile(FilePath, NewFileContent, False);
end;