我如何从Delphi的指针得到一个变体



我需要能够将裸指针转换为变体。我知道指针指向一个变量,但我似乎无法把它取出来。直接转换(正如我所认为的)失败了:

Result := Variant(FAddress)^

返回编译错误:[DCC error] E2089 Invalid typecast

我已经搜索了所有的变体。我的单位也一样,但是什么也没有。

显然我错过了什么。怎么做呢?

如果指针指向一个变量,那么它的类型是PVariant。对其进行类型转换,然后解引用:

Result := PVariant(FAddress)^;

更好的是,用正确的类型开始声明FAddress,然后您不需要类型转换:

var
  FAddress: PVariant;
Result := FAddress^;

编译器认为您尝试的类型强制转换无效,因为Variant的类型大于Pointer的类型。编译器不知道从哪里获得额外的数据来创建一个完整的Variant值。如果类型转换有效,则无论如何都不允许在变体上使用^操作符。你可能已经逃脱了这个:

Result := Variant(FAddress^);

我从来都不喜欢;如果FAddress是一个无类型的指针,那么对它解引用将产生一个没有任何大小或类型的值,并且对这种事情进行类型强制转换是很奇怪的。

相关内容

  • 没有找到相关文章

最新更新