错误在inno中升级到6.0.2后类型不匹配

时间:2019-05-29 16:07:26

标签: inno-setup

代码正常运行,但是升级到inno 6.0.2之后,编译时出现错误。错误:

  

类型不匹配

if LoadStringFromFile(TmpFile, ExecStdout) then行中的代码如下:

function NextButtonClick(CurPageID: Integer): Boolean;
var
  TmpFile, ExecStdout: string;
  ResultCode: integer;
begin
  Result := True;
  if CurPageID = HostingPage.ID then
    begin
      Domain   := HostingPage.values[0];
      DomainPort := HostingPage.values[1];

        TmpFile := ExpandConstant('{tmp}') + '\~pid.txt';
        Exec('cmd.exe',
        '/C FOR /F "usebackq tokens=5 delims= " %i IN (`netstat -ano ^|find "0.0:'+DomainPort+'"`) DO '
        + '@tasklist /fi "pid eq %i" | find "%i" > "' + TmpFile + '"', '', SW_HIDE,
        ewWaitUntilTerminated, ResultCode);
        if LoadStringFromFile(TmpFile, ExecStdout) then
        begin
            MsgBox('The Port ('+DomainPort+')  ' #13 + ExecStdout, mbError, MB_OK);
            Result := False;
        end;
        DeleteFile(TmpFile);
    end;    
end;

1 个答案:

答案 0 :(得分:0)

您发布的代码不完整,请始终发布MCVE

问题出在使用错误类型的参数,请参见文档:

  

function LoadStringFromFile(const FileName:String; var S:   AnsiString):布尔值;

像这样更改它:

function NextButtonClick(CurPageID: Integer): Boolean;
var
  TmpFile: String;
  ExecStdout: AnsiString; // << Was String in your script
  ResultCode: Integer;

这是因为Inno Setup 6是Unicode only

默认行为的更改: Inno Setup 6开始,只有一个版本可用:Unicode Inno Setup。 Unicode Inno Setup已经存在9年了,但是如果您尚未更新:请参阅帮助文件中的Unicode Inno Setup主题以获取更多信息。基本上,除非您使用[Code]进行带有字符串参数的DLL调用,否则不必对脚本进行任何更改。