当前位置: 首页 > 知识库问答 >
问题:

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

贡建修
2023-03-14

这是我的代码目前的样子:

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(例如,如果它是一个 15 位,则只有一个 0,如果是 14 位,则只有一个,等等)。什么功能能够做到这一点?

共有1个答案

百里星纬
2023-03-14

使用给定字符将字符串右填充到一定长度的通用函数:

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

如果您需要在编译时(在预处理器中)填充,请参阅Inno Setup中的如何为OutputBaseFilename用零填充版本组件。

 类似资料:
  • 问题内容: 但是我没有得到如何用零填充字符串。 输入:“ 129018”输出:“ 0000129018” 总输出长度应为TEN。 问题答案: 如果你的字符串仅包含数字,则可以将其设为整数,然后进行填充:

  • 问题内容: 用Python方式填充数字字符串的最左端方法是在其左侧添加零,即数字字符串具有特定的长度? 问题答案: 字符串: 字符串格式化文档。

  • 假设我有一个整数数组,如和一个简单的字符串,如。我如何循环通过数组和填充每一个值。假设是这样的: 输出: 到目前为止,我已经尝试了以下内容: 但是,它在print语句中给出了。解决这个问题最好的方法是什么?

  • 我正在使用数组。fill()用于整数,但我不知道如何用字符串填充。我希望它在终端屏幕上看起来像这样: A A A A A A A A A

  • 问题内容: 我需要产生固定长度的字符串以生成基于字符位置的文件。缺少的字符必须用空格字符填充。 例如,字段CITY具有15个字符的固定长度。对于输入“芝加哥”和“里约热内卢”,输出为 。 问题答案: 从Java 1.5开始,我们可以使用方法java.lang.String.format(String,Object …) 并使用类似于printf的格式。 格式字符串可以完成这项工作。其中表示参数索引

  • 我正在做一个赋值,它需要一个以字符串和int为参数的方法。该方法应该用空格填充参数字符串,直到它的长度是给定的长度。例如,padString(“你好”,8应该返回“hello___”(_代表三个空格))如果int高于字符串的长度,那么它将简单地返回字符串。我很难关闭程序的“填充”部分。 由于这个任务是本书的早期内容,我假设它可以用初学者的东西来完成,例如forloops、参数和常见的字符串方法,因