使用Inno Setup的StringChange时出现Type mismatch错误如何解决?
修复Inno Setup StringChange函数的"Type mismatch"错误
- 移除代码中多余的
end;语句:你的代码在Result := false;之后多了一个不必要的end;,这会导致编译器语法解析错误,进而引发错位的"Type mismatch"提示。修正后的完整代码如下:
function CustomSelectDirPageNextButtonClick(Sender: TWizardPage): Boolean; var DirString: String; begin Result := True; DirString := SetupMessage(msgDirExists); DirString := StringChange(DirString, '%1', WizardDirValue); // 若需要全局替换可启用下面一行: // DirString := StringChangeEx(DirString, '%1', WizardDirValue, True); if MsgBox(DirString, mbConfirmation, MB_YESNO) = IDNO then Result := false; end;
类型匹配说明:在Inno Setup v6 Unicode版本中,
StringChange的三个参数均为String类型,SetupMessage(msgDirExists)返回标准字符串,WizardDirValue也是字符串类型,本身不存在类型不匹配问题,错误的根源是多余的语法节点导致编译器解析异常。可选优化:你也可以使用
Format函数更简洁地完成占位符替换,效果一致:
DirString := Format(SetupMessage(msgDirExists), [WizardDirValue]);
内容的提问来源于stack exchange,提问作者ElektroStudios
相关产品推荐
相关产品推荐

