微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在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是一个无类型的指针,则对其取消引用会产生一个完全没有任何大小或类型的值,并且将这种事情类型转换为怪异的。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。