Delphi 7 如何正确地为十亿数字设置formatfloat int64

Delphi 7 如何正确地为十亿数字设置formatfloat int64,delphi-7,Delphi 7,所以,我使用Delphi7,我有一个编辑框,可以在里面放一个数字。由于它将使用它作为货币值,为了方便用户,我为数字添加了1000个分隔符。我将此编码为onkeyup事件。代码如下: var a, after : string; iValue, iCode : integer; begin a := edit1.Text; after := stringreplace(a,'.','', [rfreplaceall, rfignorecase]); val(after, i

所以,我使用Delphi7,我有一个编辑框,可以在里面放一个数字。由于它将使用它作为货币值,为了方便用户,我为数字添加了1000个分隔符。我将此编码为onkeyup事件。代码如下:

var 
  a, after : string; 
  iValue, iCode : integer;
begin
  a := edit1.Text;
  after := stringreplace(a,'.','', [rfreplaceall, rfignorecase]);
  val(after, iValue, iCode);
  if iCode = 0 then
  begin
    a := FormatFloat('#,##0',strtoint64(after));
    edit1.Text := a;
    edit1.selStart := Length(Edit1.Text);
  end;
end;
这是可行的,但每当我投入超过10亿美元时,它就不起作用了。 例如,我输入2.680.000.000,它将显示:

268.000.0000

如何解决这个问题?
提前谢谢

您可以将TMaskEdit与以下掩码一起使用
、、、.00例如:


它不起作用,因为您正在将文本解析为一个最大值为
2147483647
整数。你为什么要去掉小数点?“它将使用它作为一种货币”-那么你为什么要使用
Integer
/
Int64
,而不是使用
currency
?您不应该在
OnKeyUp
事件中操纵
TEdit
文本。如果您希望文本输入以特定格式出现,请考虑使用<代码> TMAKEDIT < /代码>。因为我们的货币可能不像您的货币那样运作。之后我们没有使用任何号码。谢谢你的想法。
货币
是一种二进制类型,它对
一无所知。
是专门为货币值设计的(因此得名)。查看
strotocur()
CurrToStr()
,以及全局
CurrencyDecimals
CurrencyFormat
CurrencyString
小数分隔符
格式变量。