Var 
  mychar : char ;
Begin
  mychar:=edit1.text; 
  case mychar of
    'A'..'Z','a'..'z' : showmessage('是字母');
    '0'..'9' : showmessage('是数字');
  end;
End;
这段程序那里有错误?应该如何修改?

解决方案 »

  1.   

    var
      i:integer;
      s:String;
    begin
      s;=edit.text;
      if length(s) > 0 then
      for i:=1 to length(s) do
      if s[i] in ['a'..[z],'A'..'Z'] then
         showmessage('是字母')
      else if s[i] in ['0'..'9'] then
         showmessage('是数字');
    end;这个是判断每一个字母的情况如果是要判断这个字符串可以这样。。  for i:=0 to length(s) do
      if not (s[i] in ['0'..'9']) then
        begin
        showmessage('这不是一个整字')    break;
        end;你上面的用法不对。。
    mychar:=edit1.text; //类型不匹配,char类型无法从String类型获取内容
      

  2.   

    1:case of 只能针对int型
    2:看你的代码,似乎mychar:=edit1.text;应该写成mychar:=edit1.text[1];
      

  3.   

    只有两个判断,大可不必写成case of形式Var 
      mychar : char ;
    Begin
      mychar:=edit1.text[1]; 
      if mychar in['A'..'Z','a'..'z'] then showmessage('是字母') 
      else if mychar in  ['0'..'9'] then showmessage('是数字');
    End;