Inno Setup / Pascal - 宽字符串连接

问题描述 投票:0回答:0

我使用 INNO JSON Config(如这篇文章)读取一个简单的 JSON 文件:

{
    "Item_0":{
            "Key_1": "String 1",
            "Key_2": "1",
            "Key_3": "True"
    },
    "Item_1":{
            "Key_1": "String 2",
            "Key_2": "2",
            "Key_3": "False"
    }
}

这是我的代码:

[Code]
function ParseJson(Filename: WideString; Item: String; Key: String; var ItemArray: array of WideString): Boolean;
var
  StrValue: WideString;
  StrLength: Integer;
  ItemNumber: Integer;
  Path: WideString;
begin  
  SetLength(StrValue, 16);
  StrLength := Length(StrValue);

  Path := ExpandConstant('{tmp}'+ '\json_lists\' + Filename);
  ItemNumber := 0;
  while JSONQueryString(Path, ExpandConstant(Item + '_' + IntToStr(ItemNumber)), Key, 'Default', StrValue, StrLength) then
  begin
    Log(StrValue + ' item has been found'); // only prompts in the Log the StrValue but not 'item has been found'
    ItemNumber := ItemNumber + 1;
  end;
  return := True;  
end;

问题是我需要在此之后将 StrValue(这是一个 WideString)与例如 '.json' 连接起来,如下所示:

FileName2 := StrValue + '.json'
,但是
Log(FileName2)
的输出没有 '.json' 后缀。我该怎么做?

理想情况下,我只想处理 String 而不是 WideString,所以我应该编写另一个 JSON 解析 dll,它给我一个 String 而不是 WideString(我真的不知道该怎么做)? 我尝试使用 Json Parser Library 但我无法弄清楚它是如何工作的,即使有 this post,所以欢迎任何帮助!

json inno-setup delphi-7 pascal widestring
© www.soinside.com 2019 - 2024. All rights reserved.