Delphi 7 如何正确地为十亿数字设置formatfloat int64
所以,我使用Delphi7,我有一个编辑框,可以在里面放一个数字。由于它将使用它作为货币值,为了方便用户,我为数字添加了1000个分隔符。我将此编码为onkeyup事件。代码如下: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
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
和小数分隔符
格式变量。