Inno Setup - 用零填充特定长度的字符串

时间:2016-01-09 20:00:06

标签: inno-setup pascalscript

以下是我的代码目前的样子:

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,等等。什么功能可以做到?

1 个答案:

答案 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));