今天学delphi运算符的时候发现集合运算符怎么都搞不明白。哪位高手明白帮我写一个小小的例子,还有关系运算符也有点搞不明白,希望大家帮帮忙。

解决方案 »

  1.   

    集合运算符包括并(+)、差(-)、交(*)、成员检测(in),及一些关系运算符。
    要把一个元素添加到集合中,你可以采用集合并运算。下面是一个选择字体的Delphi 例子:
    Style := Style + [fsBold];
    Style := Style + [fsBold, fsItalic] - [fsUnderline];另一种方法是利用标准过程Include 和Exclude,它们效率更高(但不能用于控件的集合类型属性,因为只能操纵一个元素):
    Include(Style, fsBold);
    Exclude(Style, fsBold);
      

  2.   

    集合类型 
    集合类型表示一组值,该组值由集合所依据的有序类型定义。定义集合的常用有序类型不多,一般为枚举类型或子界类型。如果子界类型取值为1..3,那么基于它的集合类型值可以是1、或2、或3、或1和2、或1和3、或2和3、或取所有3个数、或一个数也没有。一个变量通常包含该类型对应的一个值,而集合类型可以不包含值、包含一个值、两个值、三个值,或更多,它甚至可以包含定义范围内所有的值。下面定义一个集合:type
      Letters = set of Uppercase;现在我可以用上面类型来定义变量,并把原始类型的值赋给变量。为了在集合中表示一组值,需要用逗号将值隔开,最后用方括号结尾。下例显示了多值、单值和空值的变量赋值:var
      Letters1, Letters2, Letters3: Letters;
    begin
      Letters1 := ['A', 'B', 'C'];
      Letters2 := ['K'];
      Letters3 := [];在Delphi中,集合一般用于表示有多种选择的标记。例如下面两行代码(摘自Delphi库)声明了一个枚举类型,其中列出了窗口条上可选的图标,并声明了相应的集合类型:type
      TBorderIcon = (biSystemMenu, biMinimize, biMaximize, biHelp);
      TBorderIcons = set of TBorderIcon;实际上,给定的窗口中可以没有图标,也可以有一个或多个图标。用Object Inspector设置时(见图4.3),双击属性名,或单击属性左边的加号,自行选择,从而添加或删除集合中的值。图 4.3: Object Inspector中的集合类型属性  另一个基于集合类型的属性是字体。字体类型值可以是粗体、斜体、带下画线、带删除线等,一种字型可以既是斜体又是粗体,也可以没有属性,或者带有全部的属性。因此用集合类型来表示它。你可以象下面代码那样,在程序中给集合赋值:Font.Style := []; // no style
    Font.Style := [fsBold]; // bold style only
    Font.Style := [fsBold, fsItalic]; // two styles你也能对一个集合进行许多不同方式的操作,包括把两个相同类型的集合变量相加(或更准确地说,计算两个集合变量的并集):Font.Style := OldStyle + [fsUnderline]; // two sets
    理解集合要注意:
    1.集合首先是用户的一种自定义类型
    2.集合的类型是不受局限的,可以说是杂七杂八,集合可以为空
    3.集合的元素没有顺序,大小
    4.跟数学中的集合是一样的。