论坛风格切换切换到宽版
  • 4481阅读
  • 2回复

[已解决]InnoSetup Unicode 编译时提示“Type Mismatch” [复制链接]

上一主题 下一主题
离线ricetendto2
 

发帖
31
金钱
310
威望
31
只看楼主 倒序阅读 0 发表于: 2016-10-14
最近使用Unicode版的Inno 打包,但是在使用StringChange函数时,提示我“Type Mismatch”,
具体情况是:InnoSetup版本 Unicode 5.5
                     StringChange(str, '5438', IntToStr(m_Port)); 其中,str定义为String,m_Port为Integer,我把它转为String
我想请教大家,我这儿哪里错了?
离线wanfu

发帖
2734
金钱
12170
威望
1217
只看该作者 1 发表于: 2016-10-14
该函数的原型为:
语法:
function StringChange(var S: String; const FromStr, ToStr: String): Integer;
描述:
This function is deprecated. It is equivalent to calling StringChangeEx with the SupportMBCS parameter set to False.
此函数已弃用。它等效于调用 SupportMBCS 参数设置为 False 的 StringChangeEx 函数。

经测试,可以在 Inno Setup 中使用,但是由于它返回的是 Integer 数值,故需要以下方法调用:
s := 'C:\Program Files\Inno Setup 5';
s1 := '\';
s2 := '/';
i := StringChange(s,s1,s2);
msgbox(IntToStr(i),mbConfirmation, MB_OK);  //显示 2
msgbox(s ,mbConfirmation, MB_OK);     //显示 C:/Program Files/Inno Setup 5
msgbox(s1 ,mbConfirmation, MB_OK);   //显示 \
msgbox(s2 ,mbConfirmation, MB_OK);   //显示 /

你把 StringChange 返回的 Integer 数值作为 String 使用,当然错误。

Inno Setup 帮助中,有的地方使用了下列语法,其实是错误的。
function StringChange(S: String; Const FromStr, ToStr: String): String;

离线ricetendto2

发帖
31
金钱
310
威望
31
只看该作者 2 发表于: 2016-10-16
谢谢您的解答