我正在开发一个自动为学生分配注册号的应用程序。
如何将“1”格式化为“001”I.e从001开始计数而不是1 例如:
Ubah david: 14/CSC/001
.....
Obi emeka : 14/CSC/122
答案 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;