定义了常量
A,B,C,D,E,是string 类型的
然后,在程序里写这样一段
if ID in [A,B,C,D,E]  then
        begin
           AAllow := False;
        end; 
ID也是string 类型的但是报错说ordinal type required
为什么?

解决方案 »

  1.   

    为什么?
    ----------
    String 不是有序类型的。
      

  2.   

    能麻烦说详细点吗?我是初学DELPHI,谢谢了
      

  3.   

    我把ID改成了PCHAR类型
    然后
    if ID^ in [A,B,C,D,E]  then
            begin
               AAllow := False;
            end;
    还是不行,同样的错误
      

  4.   

    为什么这样就可以?
    if ID in ['A','B','C','D','E']  then
            begin
               AAllow := False;
            end;
      

  5.   

    哦,也就是没法做到那样子咯?像SQL语句那样多好
      

  6.   

    一、你是初学者?初学者就会用指针?你既然懂string、PChar等类型,那应该懂 Char、Byte是有序类型的,而Double不是。否则,继续看书。二、也就是没法做到那样子咯?
        参考下面一段代码:(作者:伴水清清)var
      str: WideString;
    begin
      str := '又是我路过';
      if str <> '' then
        case str[1] of
          #20320, #25105, #20182: ;
          //你 我 他 //设置属性Label1.Caption = '你 我 他'; 复制Label1控件到代码编辑器中,就可以知道汉字的Unicode
        else ShowMessage('接分');
        end;
    end;三、集合元素必须是有序类型。因为集合是一个32个字节的内存结构,共256个位,每个位的状态代表一个序数是否在集合中。
      

  7.   

    我真的是刚学DELPHI,不过之前学过C,VB,JAVA
      

  8.   

    关于集合的内存结构,参考我的一个贴子:http://community.csdn.net/Expert/topic/5337/5337219.xml?temp=.4999811
      

  9.   

    恩,刚才就想着用IN,这个在我之前提的一些语言里没用到过,居然忘了还有CASE