通过从001开始计数来格式化帕斯卡中的数字



我正在开发一款自动为学生分配注册号的应用程序。

如何将"1"格式化为"001"I.e从001开始计数而不是1例如:

Ubah david: 14/CSC/001
.....
Obi emeka : 14/CSC/122

使用格式。(链接到Delphi 10 Seattle文档,但该函数多年来没有更改。该函数在所有Delphi版本(自1.0以来)和FreePascal中都位于SysUtils单元中,在大多数其他现代Pascal方言中也可用。)

for i := 1 to 10 do
  WriteLn(Format('%.3d', i));
ReadLn;

格式说明符有多个部分(%后面跟着可选的索引:、可选的左对齐指示符-,可选的宽度和可选的.精度),后面跟着类型指示符。

%d表示

小数。参数必须是整数值。该值将转换为十进制数字字符串。如果格式字符串包含精度说明符,则表示生成的字符串必须至少包含指定数量的数字;如果该值的位数较少,则生成的字符串将用零填充。

您可以直接传递索引、宽度和精度值(如上例所示),也可以使用星号(星号或*)作为占位符间接传递。(请参阅下面的精度部分的示例。)

所以在上面的例子中,把它们放在一起,你会得到一个宽度至少为3(精度)的整数值,左加零:

001
002
003
004
005
006
007
008
009
010

因此,把它放在一个函数中:

function ZeroPad(const Value: Integer; const Width: Integer): string;
begin
  Result := Format('%.*d', [Width, Value]);
end;

示例调用:

for i := 1 to 10 do
  WriteLn(ZeroPad(i, 3));
ReadLn;

试试这个函数:

function GetFullNumber(n: word): string;
  begin
    str(n, result);
    while Length(result) < 3 do
      result := '0' + result;
  end;

或者添加另一个参数:位数:

program Project1;
function GetFullNumber(const n, Digits: word): string;
begin
  str(n, result);
  while Length(result) < Digits do
    result := '0' + result;
end;
begin
  Writeln(GetFullNumber(3, 4));
  readln;
end.

出现

如果您的Pascal编译器不支持result保留字,请将其替换为函数名。

function GetFullNumber(const n, Digits: word): string;
begin
  str(n, GetFullNumber);
  while Length(GetFullNumber) < Digits do
    GetFullNumber := '0' + GetFullNumber;
end;

最新更新