Search
 
SCRIPT & CODE EXAMPLE
 
CODE EXAMPLE FOR JAVASCRIPT

create appsettings.json inno setup

[Code]

#include "JsonParser.pas"

function FindJsonValue(
  Output: TJsonParserOutput; Parent: TJsonObject; Key: TJsonString;
  var Value: TJsonValue): Boolean;
var
  I: Integer;
begin
  for I := 0 to Length(Parent) - 1 do
  begin
    if Parent[I].Key = Key then
    begin
      Value := Parent[I].Value;
      Result := True;
      Exit;
    end;
  end;

  Result := False;
end;

function FindJsonArray(
  Output: TJsonParserOutput; Parent: TJsonObject; Key: TJsonString;
  var Arr: TJsonArray): Boolean;
var
  JsonValue: TJsonValue;
begin
  Result :=
    FindJsonValue(Output, Parent, Key, JsonValue) and
    (JsonValue.Kind = JVKArray);

  if Result then
  begin
    Arr := Output.Arrays[JsonValue.Index];
  end;
end;

{ ... }

var
  JsonLines: TStringList;
  JsonParser: TJsonParser;
  LaunchSettingsArray: TJsonArray;
  ToolDirectoryValue: TJsonValue;
  I: Integer;
begin
  { ... }

  JsonLines := TStringList.Create;
  JsonLines.LoadFromFile(FileName);

  ParseJson(JsonParser, JsonLines.Text);

  if Length(JsonParser.Output.Errors) > 0 then
  begin
    Log('Error parsing JSON');
    for I := 0 to Length(JsonParser.Output.Errors) - 1 do
    begin
      Log(JsonParser.Output.Errors[I]);
    end;
  end
    else
  begin
    if FindJsonArray(
         JsonParser.Output, JsonParser.Output.Objects[0],
         'launchSettings', LaunchSettingsArray) and
       (GetArrayLength(LaunchSettingsArray) >= 0) and
       (LaunchSettingsArray[0].Kind = JVKObject) and 
       FindJsonValue(
         JsonParser.Output,
         JsonParser.Output.Objects[LaunchSettingsArray[0].Index], 'toolDirectory',
         ToolDirectoryValue) and
       (ToolDirectoryValue.Kind = JVKString) then
    begin
      Log(Format(
        'launchSettings[0]:toolDirectory:%s', [
        JsonParser.Output.Strings[ToolDirectoryValue.Index]]));
      JsonParser.Output.Strings[ToolDirectoryValue.Index] := 'Test';
      JsonLines.Clear;
      PrintJsonParserOutput(JsonParser.Output, JsonLines);
      JsonLines.SaveToFile(FileName);
    end;
  end;

  ClearJsonParser(JsonParser);
  JsonLines.Free;
end;
Source by stackoverflow.com #
 
PREVIOUS NEXT
Tagged: #create #inno #setup
ADD COMMENT
Topic
Name
6+3 =