为什么我用if Edit1.Text='a..z' then
dosomething
上面用来判断是否为字符。但是不成功,为什么?

解决方案 »

  1.   

    var
      i, Len: Integer;
      S, Str: String;
    begin
      Str ;= Trim(Edit1.text); 
      Len := Length(Str);
      for i := 1 to Len do
      begin
        if Str[i]  not in ['0'..'9', '.', '-'] then
          showmessage('為字符');
      end;  //在非字符串的情況下
      if pos('.', S)>1 then 
         showmessage('為浮點數')
      else
         showmessage('為整數') end;
      

  2.   

    哦,if pos('.', S)>1 then 應該為if pos('.', S)>0 then
      

  3.   

    鄙视 songlian77(八國聯軍) 这个呢称。判断字符,可以用不在 '0' 和 '9' 之间的,来判断。
    不用管什么浮点数还是整数,统一使用浮点数来处理。
      

  4.   

    同意songlian77(八國聯軍)的算法
    但是鄙视他的昵称,
      

  5.   

    谢谢,随后给那个8国友军分。
    再问下,你那个判断是否为INTEGER的代码其实可以写成一个函数,如果这样,是不是直接新建一个单元,然后把上面的代码写进一个函数里,然后在需要用的文件中在uses中指定那个单元文件就行了?
      

  6.   

    还是有点问题,比如你输入几个字母那么会显示几个MESSAGEBOX,我只需要显示一次就行了啊
      

  7.   

    procedure TForm1.Button3Click(Sender: TObject);
    begin
      try
        StrToInt(Edit1.Text);
      except
        on EConvertError do ShowMessage('输入非法');
      end;
    end;
      

  8.   

    var
        i,t:integer;
        r:real;
        s:string;
    begin
        s:=Trim(Edit1.text); 
        val(s,i,t);
        if t=0 then '为整数'
        val(s,r,t);
        if t=0 then '为浮点数'
        else '为字符'
    end;
    个人意见,仅供讨论
      

  9.   

    请问VAL是什么函数?做什么用的?
      

  10.   

    val将字符串转化为整型值!
    有问题请发信息到我的E-mail:[email protected]
      

  11.   

    procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if Key in ['a'..'z','A'..'Z'] then
        showmessage('dd');
    end;
      

  12.   

    或通过限制输入的做法if  not (key in ['0'..'9']) and (key<>#8)then key:=#0;
      

  13.   

    http://expert.csdn.net/Expert/topic/858/858989.xml?temp=.8091394中看我的代码