- UID
- 49175
注册时间2008-5-1
阅读权限20
最后登录1970-1-1
以武会友
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)
|
|