我正在尝试更新我的脚本之一,以使用Inno Setup的Unicode版本。不幸的是,我遇到了一个问题,其中StringChangeEx期望看到一个Unicode字符串而不是我需要的AnsiString(类型不匹配)。是否有替代方法可以从Unicode Inno Setup中替换匹配的AnsiStrings?
如果有人不知道为什么,我总是WizardDirValue()
避免一直在输入ExpandConstant('{app}\')
。
var
AnsiData: AnsiString;
begin
LoadStringFromFile(WizardDirValue() + '\legacyansi.conf', AnsiData)
{ Type mismatch, StringChangeEx expects String which is Unicode }
StringChangeEx(AnsiData, 'current', 'replace', True);
SaveStringToFile(WizardDirValue() + '\legacyansi.conf', AnsiData)
end;
由于声明LoadStringFromFile
了StringChangeEx
函数的参数以及函数的参数,因此它们希望传递确切的类型,因此与它没有太大关系。您只需要声明一个变量,即可StringChangeEx
在ANSI和Unicode字符串类型之间进行函数调用和类型转换:
var
UnicodeStr: string;
ANSIStr: AnsiString;
begin
if LoadStringFromFile('C:\File.txt', ANSIStr) then
begin
UnicodeStr := String(ANSIStr);
if StringChangeEx(UnicodeStr, 'FromStr', 'ToStr', True) > 0 then
SaveStringToFile('C:\File.txt', AnsiString(UnicodeStr), False);
end;
end;
烦人的,不是吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句