这语句怎么有问题?if not (query1.fieldbyname('day').asstring in ['mon','mon1',mon2] ) then...
报错  
请问我要如何才能判断一个字符串是否在某集合中

解决方案 »

  1.   

    把所有的字符串放到一个StringGrid里,然后使用indexOf(query1.fieldbyname('day').asstring),如果返回值=-1就是不在列表里,如果返回值>=0就是在列表里!
      

  2.   

    上面错啦!应该是放在StringList里!
      

  3.   

    ['mon','mon1',mon2],mon2也应该是个字符串
      

  4.   

    if not (query1.fieldbyname('day').asstring in ['mon','mon1',mon2] ) then...应该不会错,是不是你少了两个''
    if not (query1.fieldbyname('day').asstring in ['mon','mon1','mon2'] ) then...
      

  5.   

    集合是同一种有序类型的值的聚集,它们包含的值没有内在的顺序,且一个值在集合中包含两次并没有
    实际意义。
    一个集合类型的取值范围,是构成它的有序类型(称为基础类型)的幂,也就是说,集合可能的值是基
    础类型的所有子集,也包含空集。基础类型可能的值不要超过256 个,并且它们的序数必须在0 到255
    之间。任何像下面的形式:
    set of baseType
    声明一个集合类型,这里,baseType 是一个合适的有序类型。
    因为基础类型的值是有限的,因此,集合类型通常使用子界类型来定义。比如下面的声明:
    type
    TSomeInts = 1..250;
    TIntSet = set of TSomeInts;
    它声明一个叫做TIntSet 的集合类型,它的值是从1 到250 之间所有可能的选择。你也可以使用下面的语
    句达到同样的目的:
    type TIntSet = set of 1..250;
    有了上面的声明,你就可以像下面这样构造集合了:
    var Set1, Set2: TIntSet;
    ...
    Set1 := [1, 3, 5, 7, 9];
    Set2 := [2, 4, 6, 8, 10]
    你也可以直接使用set of …构造直接声明变量:
    var MySet: set of 'a'..'z';
    ...
    MySet := ['a','b','c'];
    其它集合类型的实例包括:
    set of Byte
    set of (Club, Diamond, Heart, Spade)
    Data types, variables and constants
    - 56 -
    set of Char;
    运算符in 判断集合的成员关系:
    if 'a' in MySet then ... { do something } ;
    每个集合类型可包含空集,用[]来表示。