"违规行为"使用脚本常量时

时间:2017-03-03 12:58:51

标签: inno-setup

我需要实现脚本常量来检索用户选择路径的驱动器。

我试过下面的代码,但我得到了:

  

Acess违规吃了地址0043D8E0。地址01CDE694

[Code]

procedure InitializeWizard;
begin
    Page := CreateInputDirPage(
              wpSelectDir,'Select local', 'Where will be stored?', '', False, 'New Folder');

    Page.Add('Local Dserver (APP)');
    Page.Add('Local Images (Storage)');

    Page.Values[0] := ('F:\TEST1');
    Page.Values[1] := ('G:\TEST2');
end;

function ExtractFileDrive(const FileName: string): String;
begin
    Result := ExtractFileDrive(Page.Values[0]);
end;

[Run]
Filename: {code:ExtractFileDrive|0}\postgresql-9.4.5-1-windows-x64.exe

1 个答案:

答案 0 :(得分:1)

ExtractFileDrive脚本常量会影响ExtractFileDrive support function。因此,您无限制地递归调用ExtractFileDrive函数,直到堆栈溢出。

只需将您的功能重命名为其他任何内容。

一旦这样做,重命名它的论点,因为FileName令人困惑。并且还删除了其使用中的脚本常量参数,因为您实际上不使用它。

[Code]

function GetFileDrive(Param: string): String;
begin
  Result := ExtractFileDrive(Page.Values[0]);
end;

[Run]
Filename: {code:GetFileDrive}\postgresql-9.4.5-1-windows-x64.exe