请问如何检测输入数据的合法性?比如说,一个输入框,它只能接收某特定类型的数据(如整型、浮点型或具有某些特定特征的数据如ip等),要怎么检测它的合法性呢?就好像在DELPHI 的IDE 环境里的那个对象编辑器里,输入的数据是错误类型的时候会弹出来对话框提示类型错误。这个要怎么实现呢?请大家多多指点。谢谢。

解决方案 »

  1.   

    手工的检测,或者使用 MaskEdit .
      

  2.   

    1、使用TMaskEdit
    2、在他的onkeyPress或者keyDown事件中检查按键
    3、在他的onExit事件中检测
      

  3.   

    那在事件中要如何处理呢,是通过转换,然后检查是否有出现异常来检测吗?有人能介绍一下转换变量类型异常吗,比如说StrToInt('123a')应该会触发一个转换异常,那个异常是什么呢?
      

  4.   

    举个例子,假如Edit框只能输入数字,
    可以预先定义一个常量集合,
    const IntSet=['0','1','2','3','4','5','6','7','8','9'];
    然后在OnExit事件里验证用户的输入,function CheckEdit(txt:string):boolean;
    var
     i:integer;
    begin
     result:=true;
     for i:=1 to length(txt) do
      begin
       if not (txt[i] in IntSet) then
        begin
         result:=false;
         exit;
        end;
      end;
    end;procedure TForm1.Edit1Exit(Sender: TObject);
    begin
      if not CheckEdit(Edit1.Text) then
       Messagedlg(...);
      Edit1.Setfocus;
    end;其它的类似。
      

  5.   

    举个例子:
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
        if Not (Key  in ['0'..'9',#8,#13,#46] ) then
            Key := #0;
        if (Key = #13 ) then
        begin
           // add your code here
        end;这是只允许输入 0 - 9 ,回车,backspace ,delete 键的合法性检测,你可以在上面的 if 语句中进行你想要的判断
      

  6.   

    同意楼上两位,一般都手工控制或者MASKEDIT。