Ето как изглежда моят код в момента:
var
Page: TInputQueryWizardPage;
procedure IDKeyPress(Sender: TObject; var Key: Char);
var
KeyCode: Integer;
begin
KeyCode := Ord(Key);
if not ((KeyCode = 8) or ((KeyCode >= 48) and (KeyCode <= 57))) then
Key := #0;
end;
Procedure InitializeWizard();
Begin
Page := CreateInputQueryPage(blahblah);
Page.Add('Profile ID:', False);
Page.Edits[0].MaxLength := 16;
Page.Edits[0].OnKeyPress := @IDKeyPress;
Page.Values[0] := '0000000000000000';
End;
procedure WriteUserInput;
var
A: AnsiString;
U: String;
begin
LoadStringFromFile(ExpandConstant('{app}\prefs.ini'), A);
U := A;
StringChange(U, '0000000000000000', Page.Values[0]);
A := U;
SaveStringToFile(ExpandConstant('{app}\prefs.ini'), A, False);
end;
procedure CurStepChanged(CurStep: TSetupStep);
Begin
if CurStep=ssPostInstall then
begin
WriteUserInput;
end
End;
Сега това, което трябва да направя от Inno, е да оставя въведеното от потребителя такова, каквото е, ако вече е 16 цифри, запълване с 0 в края, ако е по-малко от 16 (напр. само една 0, ако е 15 цифри, две, ако е 14, и т.н.). Коя функция би могла да направи това?