强制类型转换(Cast)是指编译器把另一种不同类型的数据当成某一种数据类型处理。也叫类型强制转换(type cast)。
编译器在调用一个函数时对形参和实参的类型匹配的检查是严格的。因此为了能通过编译检查,经常需要把一个变量的类型转换为另一个变量的类型。
例如下面的例子中,将Char转化为Integer和Byte类型:
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var Achar: Char; Abyte: Byte; Ainteger: Integer; begin Achar := 'A'; //Abyte := Achar; {直接将Char类型赋值给Byte类型,会报错"Incompatible types"} Abyte := Byte(Achar); Ainteger := Integer(Achar); Writeln('Abyte = ', Abyte); { 转换成功,显示 65} Writeln('Ainteger = ', Ainteger); { 转换成功,显示 65} Readln; end.
运行后结果为:
只有当两个变量的数据长度一样时,才能对变量进行强制类型转换。
不能把一个Double类型强制转换为Integer类型,为了把一个浮点数类型转换为一个整型,要用到Trunc()和Round()函数;要把一个整型转换为一个浮点数类型,直接赋值就可以。
例如:
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var Adouble: Double; Ainteger: Integer; begin Adouble := 3.14; //Ainteger := Integer(Adouble); { 转换失败,提示“Invalid typecast”} Ainteger := Round(Adouble); Writeln('Ainteger = ', Ainteger); Ainteger := 34; Adouble := Ainteger; Writeln('Adouble = ', Adouble); { 对于把整型转化为一个浮点类型,直接赋值就可以} Readln; end.
运行后结果为:
以上代码均在Delphi7中测试通过,示例代码下载:20111228类型转换(Typecast).rar