delphi 类型转化

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;

以上方法都是通过数据内存地址操作达到转化。

原文地址:https://www.cnblogs.com/Blogs-young-chan/p/4680110.html