以下是我的代码目前的样子:
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,等等。什么功能可以做到?
答案 0 :(得分:1)
使用给定字符将字符串右键填充到特定长度的通用函数:
function PadStr(S: string; C: Char; I: Integer): string;
begin
Result := S + StringOfChar(C, I - Length(S));
end;
根据您的特殊需要,请使用:
StringChange(U, '0000000000000000', PadStr(Page.Values[0], '0', 16));