Delphi基础教程图文版之复合数据类型(集合)

在pascal中,一个集合是由具有同一有序类型的一组数据元素所组成,这一有序类型称为该集合的基类型。

有的人觉得Delphi中的集合没啥用途,这些人里面包括我自己,实际上并不是,它也有很多应用场景,例如:以前在程序中总要先从数据库中取出好多元素,然后逐个判断,现在使用集合完全可以避免这种操作

定义和说明

基础语法: set of 基类型;

基类型可以是任意顺序类型, 而不能是实型或其它构造类型。同时,基类型的数据的序号不得超过255。因为子界类型和枚举类型都是有序的,所以他们可以联用,如下:

function IsContainCharacter(Character: Char): Boolean;
var
  Chars: set of 'A' .. 'Z';

begin
  Result := Character in Chars;
end;

begin
  try
    Writeln(IsContainCharacter('B'));
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

  Readln;

end.

注意:因为集合的元素个数不超过256个,因此 var s:set of integer; 是错误的。

元素遍历

procedure ListCharacters();
var
  Chars: set of char;
  Str: string;
begin
  Chars := ['A' .. 'J', 'a', 'm'];

  for var C in Chars do begin
    Str := Str + C;
  end;

  Writeln(Str);
end;

begin
  ListCharacters;
  Readln;
end.

其他操作

type
  TEnum = (One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten);
  TSetEnum = set of TEnum;

//初始化
procedure TForm4.Button3Click(Sender: TObject);
begin
  SetEnum  :=  [one, Two];
  SetEnum1 := [Three, Nine, Ten]
end;
//集合减少
procedure TForm4.Button5Click(Sender: TObject);
begin
  SetEnum := SetEnum - [Two];
end;
//集合增加
procedure TForm4.Button6Click(Sender: TObject);
begin
  SetEnum := SetEnum + [Three];
end;
//集合减少
procedure TForm4.Button7Click(Sender: TObject);
begin
  Exclude(SetEnum, One);
end;
//集合增加
procedure TForm4.Button4Click(Sender: TObject);
begin
  Include(SetEnum, Four);
  Include(SetEnum, Ten);
end;

虽然通过+ -符号可以实现对集合元素的操作,但是比较推荐的用法还是尽量使用Include和Exclude完成

猜你喜欢

转载自blog.csdn.net/farmer_city/article/details/111221639