如何在Delphi中从指针获取变量?

| 我需要能够将裸指针转换为变量。我知道指针指向一个变体,但我似乎无法将其删除。笔直转换(正如我几乎认为的那样)失败:
Result := Variant(FAddress)^
返回编译器错误:[DCC错误] E2089无效的类型转换 我也已经搜索了variants.pas单元,但没有任何提示。 显然,我缺少了一些东西。这是怎么做的?     
已邀请:
如果指针指向Variant,则其类型为PVariant。将其输入类型,然后取消引用:
Result := PVariant(FAddress)^;
更好的是,以正确的类型声明
FAddress
开头,然后您无需进行强制转换:
var
  FAddress: PVariant;

Result := FAddress^;
编译器认为您尝试的类型转换无效,因为Variant类型大于Pointer类型。编译器不知道从何处获取附加数据以创建完整的Variant值。并且如果类型转换有效,则无论如何都不允许在Variants上使用
^
运算符。您可能已经摆脱了:
Result := Variant(FAddress^);
我从没喜欢过。如果FAddress是一个无类型的指针,则对其取消引用会产生一个完全没有任何大小或类型的值,并且将这种事情类型转换为怪异的。     

要回复问题请先登录注册