我在做一个票据打印的程序时,要将用户输入的小写金额自动计算成大写金额,在金额输入框的onkeypress函数中调用了一个自己写的转换函数calculate。在转换函数中用到以下代码:
  if sj1.Text<>'' then
  begin
    try
      sj:=strtofloat(sj1.Text );
    finally
      showmessage('只能输入数字和小数点!');
    end;
  end
  但是仍然不起作用,一旦用户在名为sj1的编辑框中输入汉字或字母,程序就报错,是什么原因呢,该怎么改呢

解决方案 »

  1.   

    这样:
      if sj1.Text<>'' then
      begin
        try
          sj:=strtofloat(sj1.Text );
        except
          showmessage('只能输入数字和小数点!');
        end;
      end
      

  2.   

    var   I, Code: Integer;
    begin
      { Get text from TEdit control }
      Val(Edit1.Text, I, Code);     //Val procedure
      { Error during conversion to integer? }
      if Code <> 0 then
        MessageDlg('Error at position: ' + IntToStr(Code), mtWarning, [mbOk], 0);
      else
        Canvas.TextOut(10, 10, 'Value = ' + IntToStr(I));end;
      

  3.   

    sj1的onkeypress中写入以下代码试试:
    IF NOT(KEY IN ['0'..'9']) THEN
       KEY:=#0;
      

  4.   

    赞成  HHBB() ,但漏了一点,就是小数点和退格键(负号要不要不知),可以在onkeypress中写入以下代码:IF NOT(KEY IN ['0'..'9','.',#8]) THEN
       KEY:=#0;
      

  5.   

    try
          sj:=strtofloat(sj1.Text );
        except
          showmessage('只能输入数字和小数点!');
        end;
    ==============
    or
    ==============
    var
    F:Extended;if Not tryStrToFloat(sj1.Text,F );
      showmessage('只能输入数字和小数点!');