在edit中使用formatfloat函数的时候,如果edit中有两个小数点如1.2.3,出错! if key in [] then begin
if key=#13 then
formatfloat('0.00',strtofloat(edit3.text));
end;
请大家帮我解决这个问题,将不胜感激!!!
if key=#13 then
formatfloat('0.00',strtofloat(edit3.text));
end;
请大家帮我解决这个问题,将不胜感激!!!
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var i,m:integer;
s:string;
begin
m:=0;
s:=edit1.text;
if key=#13 then
begin
while (pos('.',s)>0) do
begin
i:=pos('.',s);
s[i]:='_';
m:=m+1;//对“.”计数
end;
if m<2 then form1.caption:=formatfloat('0.00',strtofloat(edit1.text))
else showmessage('error!')
end;
end;
var
i,j:Integer;
begin
j:=0;
For i:=1 to Length(Edit1.text) do
begin
If Edit1.text[i]='.' then
j:=j+1;
next;
End;
IF j>1 then
showmessage('Edit1中不能的小数点不能大于1一个,转换失败')
Else if key=#13 then
begin
formatfloat('0.00',strtofloat(edit1.text));
showmessage('转换成功');
end;
end;
你准备如何处理,
1。如果提示用户改正的话
procedure TForm1.Edit1Exit(Sender: TObject);
var
s:string;
i:integer;
begin
s:=copy(edit1.Text,1,length(edit1.Text ));
// s:=string(Edit1.Text):
i:=0;
while(pos('.',s)>0) do
begin
i:=i+1;
delete(s,pos('.',s),1);
end;
if i>0 then
showmessage('您输入的小数点太多了');
end;