type
  a = set of char;
  b = set of boolean;
  c = (Sun, Mon, Tue, Wed...);
  d = set of c;

解决方案 »

  1.   

    var
      b: a;if 'a' in b then
      ...
      

  2.   

    to chechy(chechy):
    我是这样定义及使用的:
      type databa=(dtproperties,syssegments,sysconstraints);
    过程中:
     if value in databa then value:='';
    但在编译的时候,上面这句话总报错
    [Error] Sjbf.pas(64): '(' expected but 'THEN' found
    这是为什么?另外我从网上抄了一段程序,用于检测驱动器的类型,程序代码如下:
    var x:integer;
    driver:pchar;
    begin
    driver:='f:\';
    x := GetDriveType(driver);
    Case x of
    2: Label1.Caption := '该驱动器是可移动驱动器';
    3: Label1.Caption := '该驱动器是固定驱动器';
    4: Label1.Caption := '该驱动器是网络驱动器';
    5: Label1.Caption := '该驱动器是CD-ROM驱动器';
    6: Label1.Caption := '该驱动器是虚拟驱动器';
    Else Label1.Caption := '该驱动器无效';
    End;
    end;
    当我选择硬盘驱动器时没有问题,但当我选择软驱、光驱、活动磁盘及网络驱动器时系统提示“I/O Error 21”请问这是为什么?(Win2000+Delphi5下测试)
    而且如果可移动的驱动器中没有磁盘,程序怎样才能检测出来?
    (你也可以在论坛中找到该问题,在那里回答)
      

  3.   

    我的修改建议:
    type
      databa=(dtproperties,syssegments,sysconstraints);
      setdataba = set of databa;
    var
      value: databa;
      aset: setdataba;
    begin
      aset := [dtproperties,syssegments,sysconstraints];
      ...
      if value in aset then ...另,我对IO操作不熟悉。我主要是研究数据库方向的,如MIDAS。
      

  4.   

    to chechy(chechy):
    在我的程序中,value必须是String类型的,它要从ListBox中取值进行判断。
      

  5.   

    抱歉,集合类型不支持string,也不可能支持(集合实际上是通过位操作实现的,效率很高)所以如果这样,你就不得不作
    if ... then
    else if ... then
    else if ... then