剖析Object Pascal的数据类型

技术与开发

学习内容:Pascal语言

学习进度:第二课

上手难度:★★★

考试类型:二级Delphi

考试大纲明确要求考生掌握Object Pascal的数据类型,具体包括常用类型(整型、实型、字符串型、布尔型、枚举类型等)、结构类型(数组类型、集合类型、记录类型等)、指针类型。其中整型和实型是数据类型的重点,此外我们还要掌握数据类型的强制转换,这个知识点相对较难,需要我们花大力气研究。

小知识:Object Pascal是面向对象的Pascal语言。它除了拥有Turbo Pascal(最优秀的Pascal编译器)具有的各项优秀性能以外,还引进了面向对象的概念,成为新一代面向对象编译器的典范。

一、了解整型和实型的取值范围

1.整型的取值范围

整型根据用途不同可分为9种不同的整数类型,其机器内存储也不尽相同。整型取值范围的考试形式通常为试题给出存储空间的字节数和是否带符号,要求考生计算出指定类型的取值范围。计算方法是:假设存储所用空间为n个位,如果为带符号类型,则取值范围为-2n-1~2n-1-1,如果为无符号类型,则取值范围为0~2n-1。请看下例:

已知一个整数类型为ShortInt,存储空间为1个字节,带符号,请给出其取值范围。

由于此类型为带符号,因此其计算公式为-2n-1~2n-1-1

此类型存储空间为1个字节,1个字节为8个位,因此上面公式中n=8

所以取值范围是:-28-1~28-1-1=-27~27-1=-128~127

2.实型的取值范围

实数类型用来保存拥有小数部分的数,它在数据库中应用非常广泛。考生尤其要注意实数类型中的Comp类型。此类型比较特殊,如果指定一个实数的数据类型为Comp,则在保存时会用四舍五入的方式取其整数部分,比如定义变量a为Comp类型,且给变量a赋值为3.6,输出a的值时a变为了4。

二、运用类型转换

Delphi提供了两种方式进行类型转换:一种是强制类型转换,一种是通过转换函数转换。

1.强制类型转换

强制类型转换是在需要转换变量前直接添加类型操作符。

procedure TForm1.Button1Click(Sender: TObject);

var

a:Char;

b:Byte;

c:ShortInt;

begin

a:='A';

b:=byte(a);//正确,编译器不报错

c:=a;//错误,没有添加类型转换符

end;

2.使用转换函数来转换数据类型

Delphi提供了很多用于类型转换的函数或过程,比如StrToFloat(将字符串转换为浮点数),IntToStr(将整数类型转换为字符串类型),等等,下面以例子说明:

procedure TForm1.Button1Click(Sender: TObject);

var

a:integer;

b:string;

begin

a:=23; b:=IntToStr(a); Edit1.Text:=b;

end;

读者反馈

读者 T佳佳:看了上期的文章有个疑问,窗体上放置有一个TEdit类的控件Edit1,并定义了Edit1的OnEnter事件,是当鼠标移动到Edit1的上面时产生Edit1OnEnter事件还是Edit1获得焦点时产生Edit1OnEnter事件?

小新点评:当然是Edit1获得焦点时产生Edit1OnEnter事件。值得注意的是,如果Edit1的值发生改变后需要触发事件就应该用Edit1OnChange,如果要限制Edit输入框只能输入数字或者某些字符,就需要用到Edit1的OnKeyPress事件。