在edit中使用formatfloat函数的时候,如果edit中有两个小数点如1.2.3,出错!  if key in [] then begin
    if key=#13 then
      formatfloat('0.00',strtofloat(edit3.text));
  end;
请大家帮我解决这个问题,将不胜感激!!!

解决方案 »

  1.   

    1.2.3本身不是float,你不如从字符串下手。
      

  2.   

    从字符串考虑,用pos函数
    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;
      

  3.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    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;
      

  4.   

    那要看如果用户在edit中输入两个小数点如1.2.3
    你准备如何处理,
    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;
      

  5.   

    if i>1 then//if i>0 then