case语句中不能用string的.
Edit的Text居中没有属性,只能默认的居左.

解决方案 »

  1.   

    1. case的确不支持String变量,你可以用strtoint(e_xs.Text)把它转换为整数
    2. edit控件没有居中属性,文字只能靠左显示。
      

  2.   

    不会这样吧,那case语句中只能用integer型吗?
    但是我看见这样一段程序也没有问题的
    procedure KeyPressControl(AStr:String;iFlag:Integer;Sender:TObject;var Key:Char);
    begin
      case key of
        '0'..'9':Key:=Key;
        '.':
            if pos('.',AStr)<>0 then
              Key:=#0
            else
              Key:=Key;
        #8:Key:=Key;
      else
        Key:=#0;
      end;
    这是为什么呢?
      

  3.   

    是的,case选择的是数字,当然不能是string.
    edit中是没有属性居中的,你可以用空格键让它居中
      

  4.   

    那有想case语句一样的语句可以用string型的吗?
    除了if
    edit不能居中那什么控件即可以编辑又可以居中呢????
      

  5.   

    case (表达式)of
    其中表达式必须是有序类型(整型、字符型、布尔型、枚举型、子界型),string是不可以的
      

  6.   

    var
    s_pm :char;
    [Error] computer.pas(88): 不相容类型: 'Char'并且 'TCaption'
      

  7.   

    char是有序类型,所以他可以用case.
    你编译不过去,是因为你程序写错了。
    你吧具体程序贴出来,我看看 
      

  8.   

    我这样定义会有错误吗?
    procedure Tfm_computer.B_1Click(Sender: TObject);
    var
    s_pm :char;
    begin
    s_pm:=e_xs.Text ;end;end.
      

  9.   

    var
    s_pm :char; // 定义了一个byte
    begin
    s_pm:=e_xs.Text ; // e_xs.Text是字符串型,不配套end;
      

  10.   

    char是可以的
    你可以这么写
    e_xs.Text[1]
    记住了加[1]
    因为text是string,只有text[1]才是char
      

  11.   

    就是说如果要用char接收text要以数组的形式是吗?
    不能以字符串的形式????
    那如何接收和判断这样'abc'形式的字符串
    是要用数组的方法才可以判断吗???
      

  12.   

    char: 一个byte的大小,但是和byte不是同类型
    string: 一个字符串,格式和array[0..10] of char是不同的,string的第一个byte是字符串的总长,后面是字符串,最后一个byte是#0
      

  13.   

    只要是有序的类型,case语句就能用,string,integer and so on
    不过除了integer的类型其他的类型,还是转化成枚举类型比较好,这样case语句使用起来比较方便
      

  14.   

    现有一串字符
    我想判断是否为‘abc’或‘def’或‘ghi’等等,
    这样的判断是不是不能用case只能用if呢?
    如果可以应该如何判断?????
      

  15.   

    现有一串字符
    我想判断是否为‘abc’或‘def’或‘ghi’等等,
    这样的判断是不是不能用case只能用if呢?
    如果可以应该如何判断????? 
    只能用if语句!