pascal中的格式编号,从001开始计算

时间:2016-01-07 11:03:00

标签: pascal

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

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

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

2 个答案:

答案 0 :(得分:1)

使用Format。 (链接到Delphi 10 Seattle文档,但该函数在几年内没有改变。该函数在所有Delphi版本(自1.0)和FreePascal中的SysUtils单元中,并且在大多数其他现代版本中可用帕斯卡方言也是如此。)

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

格式说明符有多个部分(后跟一个可选的索引:,一个可选的左对齐指示符 - ,一个可选的 > width ,以及一个可选的 .precision ,后跟一个类型指示符。

%d表示

  

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

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

因此,在上面的示例中将这些放在一起,得到一个整数值,宽度至少为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;

答案 1 :(得分:0)

尝试此功能:

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;