随笔 - 33  文章 - 0  评论 - 0  阅读 - 6418

实例14 记录与集合

记录是Pascal语言的一种结构类型,相当于C语言中的struct类型,它是多种数据类型的组合,用record关键字声明,它的定义形式如下:

type

  MyRec=record

    aa:double;

    bb:Integer;

    cc:char;

  end;

使用记录的方法如下:

var

  Rec:MyRec;

begin

  Rec.aa:=123.45;

  Rec.bb:=12;

  Rec.cc:='C';

end;

记录的使用方法与C语言的结构使用方法一样,先说明,后使用。使用时,用.符号连接记录名称与域:记录名.域名。

记录还有一种定义方式,如下所示:

type

  Rcc=record

    cc:Char;

    nn:Integer;

    case Integer of

      0:(bb1:Integer);

      1:(bb2:double);

      2:(bb3:char);

  end;

其中含有一个case,这里的case不代表case语句,但表达的意思与case语句相似。这个case与C语言中的Union(联合)一样,表示不同类型的数据在内存同占同一块区域,这样定义的好处是能够为记录节省存储空间。

集合可以说是记录的一种特殊形式,它也是由多个数据组成,但要求数据时有序的,比如有序的数、字符、枚举等,它规定集合元素最多不超过256个。有些数虽然是有序数,但是超过了256,也不能用集合这种方式。集合用关键字set of声明,比如下面的几种声明:

type

  I_Set=set of 1..100;  //集合元素从1-100

  C_set=set of 'A'..'Z';  //集合元素从A-Z

  N_set=set of Char;  //集合元素从#0-#255;

  TEnum=(aa1,aa2,aa3,aa4,aa5);

  E_set=set of TEnum;  //集合元素是枚举中的元素

以上的声明都是合法的,再看看下面的声明:

type

  My_set1=set of 1..1000;

  My_set2=set of Integer;

  My_set3=set of double;

  My_set4=set of string;

这4种声明都是不合法的,第一种与第二种的错误是,超过了集合规定的范围256,第三种与第四中不是有序类型。

集合如何运算?请看下面的程序代码,它将结合的几种运算方式都体现出来。

type

  TA_Set=set of 'A'..'Z';

var

  A_Set:TA_Set;

begin

  A_Set:=['A'..'M'];  //集合元素初始化

  //关系运算第一种情况,是否在集合中

  if 'C' in A_Set then

    ShowMessage('C在集合中')

  else

    ShowMessage('C不在集合中');

 //关系运算第二种情况,是否不在集合中

  if not ('Z' in A_Set) then

    ShowMessage('Z不在集合中')

  else

    ShowMessage('Z在集合中');

  //集合中加元素的第一种方法,用Include

  Include(A_Set,'O');

  //集合中加元素的第二种方法,用+号

  A_Set:=A_Set+['P'];

  //集合中减元素的第一种方法,用Exclude

  Exclude(A_Set,'B');

  //集合中减元素的第二种方法,用-号

  A_Set:=A_Set - ['D','E'];

  //交集运算,用*号

  if ['E','F','G','H'] * A_Set = ['E','F','G','H'] then

    ShowMessage('交集中有E、F、G、H')

  else

    ShowMessage('交集中没有E、F、G、H');

end;

posted on   Delphi搬运工  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示