| 
注册时间2008-5-1
阅读权限20
最后登录1970-1-1UID49175 以武会友  
 
 TA的每日心情|  | 奋斗 2017-4-20 22:12
 | 
|---|
 签到天数: 1 天 [LV.1]初来乍到 | 
 
| 枚举类型: 有些数据的个数总是有限的。而且可以一一列举出来,为此delphi提供了一种类型为权举类型
 如:星期:(只有星期一到星期日)
 颜色:(红,绿,蓝,白,黑)假定某个物体只能取这五种颜色
 
 A:枚举类型的定义:
 type
 类型名称=(标识符1,标识符2...标识符n)
 比如:
 type color=(red,blue,green,white,black);
 说明:
 1:类型标识符是用户自定义的枚举类型名称.
 2: 标识符表示该类型数据中元素。以后该类型的元素就只能够取这些值
 3: 枚举常量不充许在同一个枚举型定义中重复出现
 4: 枚举常不充许在不同类型定义中重复出现
 
 B:枚举型变量的声明:
 var c1,c2:color;
 
 C:枚举类型的运算:
 从本质上讲,枚举类型不过就是用一些枚举常量来表示一组连续的整数,这些枚举常量就像符号常量,是 整数的形像化表示。
 1:使用函数 如: type week=(sun,mon,tue,wed,thu,fri) 则
 ord(tue)=2 low(week)=0 high(week)=5 [用 CharCase属性来说明枚举类型在delphi的应用]
 ------------------------------------------------------------------------------------------------------------------
 子界类型:
 在实际的应用中,许多的变量的取值都有一定的限制的。如每年的月份数在1---12之间。等。也就是说这种类型的变量可以取很多值,但是它们只能取在类型中定义的某个范围之内的值,这就是子界类型。
 
 A:子界类型的定义:
 type
 类型名称=常量1..常量2;
 比如: type moth=1..12;
 说明:
 1:子界的上界必须不小于界
 B:子界类型变量的声明:
 var m1:month;
 也可以不经过类型定义而直接定义子界类型的变量   比如:m1,m2:1..12;[这样m1或m2就只能够取1到12之间有每一个值了]
 C:子界类型所充许的运算其类型所充许的运算完全一致。
 ------------------------------------------------------------------------------------------------------------------
 集合类型:
 集合是指具有相同性质且可以相互区分的对像的全体。构成集合的各个对像,称为集合的元素。如小于100的正整数全体等。 在delphi中许多对像的属性被定义为集合类型。
 A:集合类型的定义:
 type
 类型名称=set of 类型
 说明:类型表示集合中各个元素的类型,可以是字符型,布尔型,枚举型和子界型等。不能是整型,实型
 比如:
 numbers=set of 1..100 直接可出枚举类型或子界类型。
 uchar=set of 'a'..'z';
 color=set of (red,green,yellow,white)等。
 也可以先定义枚举或子界类型再定义集合类型 如:
 type
 color=(red,green,yellow,white);
 tcolor=set of color;
 说明:
 在delphi中,集合元素的个数最多不能超过256个,因此类型的序数值必须在0-255之间。由于整型数据 的取值范围是-32768----32767之间,所以类型不能是整型。且子界类型只能在0-255范围内。
 
 以下定义是错误的:
 type numbers=set 100..300;
 
 B:集合变量的声明:
 如:
 type
 color=(red,green,yellow,white);
 tcolor=set of color;
 var
 colo1,colo2:tcolor
 也可以不经过定义直接声明集合类型的变量
 var
 c1:set of (red,green,yellow,white)等。
 C:集合变量的取值:
 集合变量的取值称为集合值。它是基类型元素的一个集合。集合值一般用方括号括起来的元素序列,元素 和元素之间用逗号隔开。
 比如:
 type
 colors=(read,yellow,blue);
 tcolor=set of colors;
 var
 co:tcolor;
 则:
 co=[],co=[red],co=[red,yellow]等。
 说明:
 1:集合变量中重复元素被视作同一个元素。如:[red,yellow] =[red,yellow,red]
 2:若集合中的元素连续出现,则可以写成子界的形式如集合[0,1,2,3,4,5,6,7,8,9]等于[0..9]
 
 集合的运算:
 1:并运算:[1,2,3]+[2,3,4]=[1,2,3,4]
 2:差运算:[1,2,3]-[2,3]=[1]
 3:交集运算 [1,2,3]*[2,3] = [2,3]
 集合的关系运算:
 元素对集合的属于运算:
 如 2 in [3,2] 为 true; 4 in [3, 2] 为 false等。
 集合关系的相等运算:[2,3]=[3,2] true
 集合在delphi中的应用:
 1:字体样式:fontstyle
 这个在设置字体的时候有,比如Form1.Font.Style := [fsbold,fsunderline];//粗体字,有下划线
 2:对文本框的限制: key in ['0'..'9',#8]
 3:对shift键的限制:
 
 ------------------------------------------------------------------------------------------------------------------
 数组:
 1:一维数组:
 定义:
 type
 数组类型标识符=array[长度] of 元素类型
 比如: type
 myar=array[1..5] of integer  //看到这个定义,应该很明了,这是一个集合定义1..5。
 myte=array[1..5] of string
 定义了数组类型之后,再定义变量:
 var
 t1:myar;t2:myte;等
 当然也可以把数组的类型定义和数组的变量的定义合二为一如:
 var
 test1,test2:array[0..4] of real等。
 要访问数组里面的元素可以用数组名加上方括号来表示如:test1[0]:=3.4等。
 函数low,high这两个函数可以返回一个数组的最小下标和最大下标。而通过函数length可以返回数组的 长度。如 low(test1)=0 high(test1)=4 length(test1)=5
 和C语言中数组的区别:
 C中数组的索引只能从0开始,比如int a[5];但是在Delphi中,数组的下限索引未必是从0开始的,这个由用户自己定义的,比如上面定义的array[1..5] of integer;下限就是从1开始。
 
 2:二维数组:
 定义:
 type
 数组类型标识符=array[行长度,列长度] of 元素类型
 如:
 type
 tp=array[0..3,0..4] of integer [3行四列]
 除上面的定义方式外,二维数组定义还有一种办法,就是先定义一个一维数组,然后再定义,比如上面的可以定义为
 tp = array[0..3] of array[0..4] of integer;
 定义变量:
 var
 tp1:tp; 或tp1:array[0..3,0..4] of integer;
 引用: tp1[2,3] 不是 tp1[2][3],这个与C又有区别了啊!注意!
 
 说明:
 1:在一个var里面定义的两个数组之间可以可以整体赋值
 如:
 var
 ar1,ar2:array[1..4] of integer;
 var
 ar3:array[1..4] of integer
 可以执行: ar2:=ar1;
 但是不能执行: ar3:=ar1;
 2:可以把数组作为过程的参数:
 如;
 procedure myporc(x:array of string)
 begin
 .....
 
 ------------------------------------------------------------------------------------------------------------------
 记录类型:
 相当于我们C语言里面的结构体
 定义:
 type
 记录类型标识符=record
 成员1:类型;
 成员2:类型;
 ....
 成员n:类型;
 end;
 比如:
 type
 right=record
 mc:string;
 name:string;
 righ:string;
 end
 除了上面这样定义外,结构体定义还有另外一种方式,就是
 type
 结构体名= packed record
 end;
 这里有一个packed关键字,有了这个关键字,就是不采用对齐方式进行排放,否则就会按照4字节对齐的方式来对结构体的内存数据进行排放,如果不够4字节,Delphi会自动补齐4字节,这样做的好处是,加快了查询速度,弊端是增大了程序体积!
 
 
 ------------------------------------------------------------------------------------------------------------------
 指针类型:
 定义:
 type
 指针类型标识符=^基类型。
 比如:
 type
 st=^string; 或 pi=^integer;
 定义指针类型的变量:
 var
 test:st;
 指针的运算:
 new:用于在程序中为动态变量分配一块区域,并把该区域的地址赋给指针变量。所分配的大小由指针 所指的类型决定,当调用了new过程后,程序就可以用"p^"[相当于*p]作为指针所指类型的动态变量。。相应地当程序不再使用动态变量时,就应当调用dispose删除new创建的动态变量。并释放所分配的空间。
 比如:
 type
 pi:^integer;
 var
 p1,p2:pi;
 p:integer;
 begin
 p:=20;
 p2:=@p;//使p2指向整型变量p
 new(p1);//p1没有指向任何变量,而是通过调用new函数在内存中找一快空闲的单元分 配给p1
 p1^:=20 [p1所指向的单元赋值为20]
 p2^:=20 [p2所指向的单元即p值为20]
 end;
 @操作符:相当于C里面的&取地址符
 例子程序:
  例子.rar
(2.21 KB, 下载次数: 3) | 
 |