gpt4 book ai didi

Delphi - TValue 到指针和返回

转载 作者:行者123 更新时间:2023-12-03 15:44:40 28 4
gpt4 key购买 nike

我正在努力处理一段简单的代码,即使它很简单,我也找不到解决方案。在一部分上,我有一个名为这样的事件

OnReadMessageParameter(Self, aName, aTypeInfo, pointer(@aValue), [psIsTValue]);

重要的是 aValue 参数,其类型为 TValue 。当调用 aValue.IsObject 时,该值为 true。我已为此事件分配了我的例程,以便处理其中的数据:

.DoOnReadMessageParameter(Sender: TROMessage; const aName: string;
aTypeInfo: PTypeInfo; const DataRef: pointer; Attributes: TParamAttributes);

现在,我的问题是,我尝试了多种方法将 DataRef 转换回 TValue 项:

var val: tvalue;

tvalue.Make(@DataRef^,TypeInfo(TValue),val);
or another attempt
val := TValue(@DataRef^);

但 IsObject 属性为 false。这一定是我错过的非常简单的事情。有什么想法吗?

最佳答案

其中aValue是TValue,@aValue是指向TValue结构的指针,而不是它包装的值。更好的设计是使 OnReadMessageParameter 事件的 DataRef 参数类型化为 TValue 本身,而不是非类型化指针。

但是,如果您无法控制这一点,则需要将 DataRef 转换为指向 TValue 的指针,然后引用它 -

type
PValue = ^TValue;
var
val: TValue;
begin
val := PValue(DataRef)^;

关于Delphi - TValue 到指针和返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44781068/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com