Inno setup Inno设置:使用StringChangeEx替换XML文件中的字符串

Inno setup Inno设置:使用StringChangeEx替换XML文件中的字符串,inno-setup,Inno Setup,有关 正如答案中所建议的,我使用的是一个模板xml,比如“app.xml”。我想用脚本中其他地方使用的函数“DsnName”{code:DsnName}的结果替换该文件中的字符串:“Dsn=Serverxxx” [Code] procedure WriteAppPath; var FileData: String; begin LoadStringFromFile(ExpandConstant('{app}\app.xml'), FileData); StringChan

有关

正如答案中所建议的,我使用的是一个模板xml,比如“app.xml”。我想用脚本中其他地方使用的函数“DsnName”{code:DsnName}的结果替换该文件中的字符串:“Dsn=Serverxxx”

[Code]
procedure WriteAppPath;
var
    FileData: String;
begin
    LoadStringFromFile(ExpandConstant('{app}\app.xml'), FileData);
    StringChange(FileData, 'XXXXXMARKERXXXXX', ExpandConstant('{app}'));
    SaveStringToFile(ExpandConstant('{app}\app.xml'), FileData, False);
end;
我好像没法让它工作。上面的代码是如何完成的?而且,使用
StringChangeEx
会是什么样子

我知道这可能会被标记为重复,但我就是想不出来


谢谢

我认为如果您查看Inno安装帮助,它会解释:

说明

将FromStr中的所有引用更改为ToStr。如果SupportDBCS为True(除非需要二进制安全性,否则建议使用),则可以正确识别和处理S中的双字节字符序列。否则,函数将以二进制安全的方式运行。返回匹配和更改FromStr的次数

因此,您正在做的是:

  • 将文本文件作为一个长文本字符串读取
  • 在字符串中使用Yyy更改Xxx的所有实例
  • 将字符串保存回文件
  • 但它确实表明:

    将指定的二进制或非Unicode文本文件加载到指定的字符串中。如果成功,则返回True,否则返回False

    所以这个函数可能不适合您,因为XML文件通常是Unicode的


    答案解释了。

    可能重复的“我似乎无法让它工作”是无用的问题描述。我们需要。谢谢安德鲁。我决定不使用StringchangeEx。