[转帖]Delphi中的物件类型_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3473 | 回复: 0   主题: [转帖]Delphi中的物件类型        下一篇 
wenjie.zhang
注册用户
等级:上尉
经验:628
发帖:54
精华:0
注册:2013-11-11
状态:离线
发送短消息息给wenjie.zhang 加好友    发送短消息息给wenjie.zhang 发消息
发表于: IP:您无权察看 2013-11-12 11:23:12 | [全部帖] [楼主帖] 楼主

枚举类型



一个枚举型的说明列出了所有这种类型可以包括的值: type

Tdays=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);

可以定义上述枚举类型的
变量

var

DayOfWeek:TDays;

在枚举型中,
括号中的每一个值都有一个由说明它的位置决定的整形值。例如Sunday有整形值0,Monday有整形值1等。您可以把DayOfWeek说明为一个整形
变量,并将一星期的每一天赋一个整形值以达到相同的效果,但用枚举型会使得程序可读性好,编写容易。当您在枚举型中列出值时,您同时说明了这个值是一个标识符。例如您的程序中如果已经含有TDays类型且说明了DayOfWeeks
变量,则程序中便不能使用Monday变量,因为它已经被说明为标识符了。

子界类型



子界型是下列这些类型中某范围内的值:整形、布尔量、字符型或枚举型。在您想限制一个
变量的取值范围时,子界型是非常有用的。

type

Thours=0..23;

TValidLetter='A'..'F';

TDays=(Sunday,Monday,Tuesday,Wednesday,Thursday,

Friday,Saturday);{枚举型}

TWorkDay=Monday..Friday;{一个TDays型的子界}

子界型限定了
变量的可能取值范围。当范围检查打开时,(在库单元的Implementation后面有{$R*.DFM}字样表示范围检查打开,否则您可以在Options|Project|ComplierOptions中选择RangeCheking来打开范围检查),如果
变量取到子界以外的值,会出现一个范围检查错误。

数组类型



数组是某种
数据类型的有序组合,其中每一个元素的值由其相对位置来指定,您可以在数组的某个位置上放置数据,并在需要时使用这些数据。下面的类型说明了一个Double型的
数组变量

var
Check:array[1..10]ofDouble;


它表示Check指向一个含有10个Double型元素的数据串列,代表每一个元素的是1到10之间的数字,称为索引。数组的每一项由数组名称加上[]中的索引来表示。Check包含10个变量,Check[1]表示第一个变量。您也可以把数组定义成类型:

type
TCheck=array[1..10]ofDouble;



变量说明改为:

var
Check:TCheck;


您可以通过给数组赋值等方法来使用数组。下面的语句将0.0赋给Check数组中的所有元素:

forJ:=1to10do
Check[J]:=0.0;,


数组也可以是多维的,下面的类型定义了一个20行、20列的数组。

type
Ttable=array[1..20,1..20]ofDouble;
var
table1:TTable;


,;,;想将这一表格的所有数据初始化为0.0,您可以使用
for循环

var
Col,Row:Integer;

forCol:=1to20do
forRow:=1to20do
Table1[Col,Row]:=0.0;


字符串类型



字符串类型事实上是一个一维的字符数组。当您说明一个字符串型的
变量时,您应当指明这个字符串的大小,下面是说明字符串类型的例子:

type
MyString:string[15];
var
MyName:MyString;



变量MyName被说明成为最多可以包含15个字符。如果您没有说明字符串的大小,Delphi会认为字符串包含最大值255个字符。给字符串赋值可以直接使用单引号括起的字串赋值:

MyName:='Frank.Smith';


或MyName:='
张明';

因为MyName是一个可以包含15个字符的MyString型
变量,上文的两个的变量都是有效的,一个汉字可以视作两个字符。当您给字符串型
变量赋的值多于定义数值时,例如将MyName赋为‘FrankSmith.Franklin’,则Delphi只会接受前15个字符‘FrankSmith.Fran’。在内存中,字符串通常占用比所说明的大小多一个
字节的空间,因为第一个位置是一个包含这个数组大小的字节。您可以使用索引值来访问字符串的字符,MyName[1]可以得到MyName的第一个字符'F'。

可以使用Delphi丰富的
运算符、过程和函数来处理字符串型的
变量和属性。下面介绍几个常用的运算符和Delphi过程或函数:

Concat和(+)功能相同,都可以将多个字符串组合在一起,建立一个较大的字符串;Copy会返回一个字符串中的子字符串;Delete在一个字符串中从一个指定位置起删除一定数目的字符;Insert在一个字符串中插入一个字符串;Length返回字符串的长度;Pos返回一个子字符串在一个字符串中的位置,即索引值。

集合类型



集合类型是一群相同类型元素的组合,这些类型必须是有限类型如整形、布尔型、字符型、枚举型和子界型。在检查一个值是否属于一个特定集合时,集合类型非常有用。下面的例程可以说明集合类型的用法:在
窗体上加入一个编辑框和一个按钮,清除编辑框中的文字,在其上加上Caption为“输入元音”的标签Label,并在编辑框的下方加入一个空的标签,将按钮的Default属性改为True,建立按钮的事件处理过程如下:

procedureTForm1.Button1Click(Sender:TObject);
type
Tvowels=setofChar;
var
Vowels:TVowels;
begin
Vowels:=['a','e','i','o','u'];
ifEdit1.Text[1]inVowelsthen


Lable2.Caption:='是元音';

else


Lable2.Caption:='请再试';

end;


执行这个程序,在编辑框中输入字母,表达式Edit1.Text[1]inVowels的结果是布尔型的,in是运算符,用来判断字母是否存在于集合中。输入的判别结果会显示在编辑框的下方。以上就用到了集合类型TVowels。

记录类型



记录是您的程序可以成组访问的一群数据的集合。下面的例程说明了一个记录类型的用法:

type
TEmployee=record
Name:string[20];
YearHired:1990..2000;
Salsry:Double;
Position:string[20];
end;


记录包含可以保存数据的域,每一个域有一个
数据类型。上文的记录TEmployee类型就含有四个域。您可以用以下的方式说明记录型的
变量

var
NewEmployee,PromotedEmployee:TEmployee;


用如下的方法可以访问记录的单域:

NewEmployee.Salary:=1000;


编写如下的语句可以给整个记录赋值:

withPromotedEmployeedo
beginsfu nb
Name:='';
YearHired:=1993;
Salary:=2000.00
Position:='editor';
end;


您的程序可以将记录当成单一实体来操作:

PromptEmployee:=NewEmployee;


以上介绍了用户常用的自定义类型。在Delphi的编程中,对象是非常重要的用户自定义
数据类型。象记录一样,对象是结构化的
数据类型,它包含数据的域(Field),也包含作为方法的过程和函数。在Delphi中,当您向
窗体中加入一个部件,也就是向
窗体对象中加入了一个域;每一个部件也是对象,每当您建立一个事件处理过程使得部件可以响应一个事件时,您即自动地在窗体中加入了一个方法




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论