사용자 지정 'CreateInputOptionPage'을 만드는이 지원 페이지에서 페이지를 변수에 할당하여 저장하는 것이 좋습니다. 그러나이 과제가 언제 일어나야하는지 명확하지 않습니다. '전역 변수를 사용하지 않고 사용자 지정 마법사 페이지에서 값 읽기
내가 말할 수있는 것부터, 페이지를 만들 때이 권한을 할당하면 기본값을 얻게됩니다. 이것은 페이지가 생성 될 때 사용자가 아직 어떠한 "Input Query"도 입력하지 않았기 때문에 의미가 있습니다.
따라서 난에서 페이지의 변수 (Page.Values[0]
)에 액세스하기 위해 필요한, 그렇게하기 위해서는 function NextButtonClick(CurPageID: Integer): Boolean;
를 사용하여, 다음 버튼을 클릭 변수는 페이지의 값을 할당하도록 권유 NextButtonClick
기능. Page가 다른 함수로 정의 되었기 때문에 Page를 전역 변수로 사용하기 위해 해당 값에 액세스 할 수있는 유일한 방법입니까? 그게 내가해야 할 일이지만 글로벌 변수에 대한 대안이있는 사람이 있는지 궁금해하고있었습니다.
내 코드의 스텁.
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "O"
#define MyAppVersion "0.0"
#define MyAppPublisher "O."
#define MyAppURL "http://www.o.com/"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{ED5F31B8-32DD-4175-833A-C6D7CBD90DD9}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={sd}\{#MyAppName}
AllowNoIcons=yes
OutputDir={desktop}
OutputBaseFilename=dummy
Compression=lzma
SolidCompression=yes
[code]
var
Page: TInputOptionWizardPage;
InstallationTypeIsClient: boolean;
procedure InitializeWizard();
begin
Page := CreateInputOptionPage(wpWelcome,'Installation Type', 'Select Installation Type', 'No really, do some selecting', True, False)
Page.Add('Server Install');
Page.Add('Client Install');
Page.Values[1] := True;
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID=100 then
begin
InstallationTypeIsClient := Page.Values[1];
MsgBox('InstallationTypeIsClient value is ' + Format('%d', [InstallationTypeIsClient]), mbInformation, MB_OK);
end;
Result := True;
end;
전역 변수에 어떤 문제점이 있습니까? –
아무도, 난 그냥 아마추어 프로그래머이고 전역 변수가 더러운이라고 들었습니다. –
예, 전체 애플리케이션을 개발할 때 독립형 코드로 더티입니다. 이 경우 기존 응용 프로그램에 대해 이벤트 훅을 구현하기 만하므로 다른 선택의 여지가 없습니다. –