小问题Format():第一个回答者正确者拿分(100分)

  • 主题发起人 主题发起人 savetime
  • 开始时间 开始时间
S

savetime

Unregistered / Unconfirmed
GUEST, unregistred user!
小问题:
var
i: Integer
begin
i := 4;
end;
如何转换 i 为三个字节的字符串 '004'
我不大会用Format()
第一个回答者正确者拿分
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
i := 4;
Label1.Caption :=Format('%1:d%1:d%0:d' , [i,0]);
end;

end.
 
对不起,我没说清楚,
i是一个三位以内的整数,也就是说可能是 44 或444。

我本来是填20分的,没想到竟弄出100分。不过,能解决问题就好办。[:(]
 
这还不好办!分3个情况阿!然后按照上面的写法format不久可以了!
 
没有更好的办法吗?

(天哪,晚上网速还这么慢?)
 
没有更好的办法吗?
如果i有更多位呢?那还得写个循环?难道没有像TField中那样的DisplayFormat
或EditFormat属性?
(天哪,晚上网速还这么慢?)
 
应该说我不知道还有没有别的函数,你找出来,我来跟你看看怎么使用那个函数。如何?
 
我是个新手,不知道有没有别的函数。
我在做一个数据库系统,合同编号我想自动生成,如:
PO-2002-01-12-001
开始以为很简单,到后来就发现最后一个系列号难做。
我这边网络比蜗牛还慢,实在等不及了,明天还要上班,先走一步。
等明天看看有没有更好的办法。
 
呵呵,混点分。一个小过程:
function MyFormatStr(AInteger:Integer):String;
begin
Result := format('%3d',[AInteger]);//取最少三位数字
Result := StringReplace(Result, ' ', '0', [rfReplaceAll])
//把字符串空格换成0
end;
使用:
procedure TForm1.Button1Click(Sender: TObject);
var
i:Integer;
begin
i:= 4;
ShowMessage(MyFormatStr(i));
i:= 44;
ShowMessage(MyFormatStr(i));
i:= 444;
ShowMessage(MyFormatStr(i));
end;
 
真的是来混分的家伙!
 
Edit1.Text:=Formatfloat('000',i);
 
format('%.3d',[3]);
给分。
 
var
i:Integer;
begin
i:=4;
Edit1.Text:=format('%.3d',);
 
楼上两位是最标准的用法。
 
昨晚辛苦taozhiyu了。
format('%.3d',[3]);
不错。

我原以为马上就有人答出最佳答案,现在看来“第一个回答者正确者拿分”有点不合情理,
改为“最先提出最合理的答案”
 
后退
顶部