1.typecasting类型强制转化
var
B : Boolean;
Begin
B := Boolean(1);
End;
对于对象和接口,采用as操作符进行转化,但要先进行兼容性判断。
2.Pointer指针
Var
A : Integer;
P : PBoolean;
B : Boolean;
Begin
A := 1;
P := @A;//或者函数Addr;
B := P^;
End;
3.Variants可变类型
Variants变量可以存储任何类型,因此可以作为中转站。
Var
V : Variants;
B : Boolean;
Begin
V := 1;
B := V;
End;
4.Variant parts of records变体记录
所有的变体字段共用一段内存
type
TDataConv = record
case T: Boolean of
True: (I: Byte);
False: (B: Boolean;);
end;
var
D: TDataConv;
begin
D.I := 1;
end;
使用变体记录时要注意:
(1)变体字段不能是long strings、dynamic arrays、variants、interfaces 等由编译器自动管理内存的类型,也不能是含有上述类型的构造类型,但可以是这些类型和构造类型的指针。
(2)所有变体字段共享一段内存。而共享内存的大小则由最大变体字段决定。
(3)当tag 存在时,它也是记录的一个字段。也可以没有tag。
5.absolute addressing绝对地址
声明共享一段内存的多个变量,实现类型转化
var
I: Integer;
B: Boolean absolute I;//B和I共享一段内存
begin
I := 1;
end;
以上方法都是通过数据内存地址操作达到转化。