强制类型转换(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