gpt4 book ai didi

delphi - 如何将未知接口(interface)保存到指针?

转载 作者:行者123 更新时间:2023-12-03 14:49:47 25 4
gpt4 key购买 nike

我可以将未知接口(interface)保存到指针吗?

例如,我有一个未知的接口(interface),想要将其保存到 TreeNode 数据中?

var
X : Inknown;

保存:

....  
Node:=TreeView1.Items.Add;
//Node.data:=x; //compiler won't allow this
Node.data:=@x;
...

获取:

...  
var
//X:=Node.data; //compiler won't allow this too
Pointer(X):=Node.data; //an exception caught
...

最佳答案

接口(interface)是一个指针,因此您可以按原样存储它(不要使用@运算符)。但是,为了确保接口(interface)的生命周期,只要节点引用​​它,您就必须手动递增/递减其引用计数,例如:

Node := TreeView1.Items.Add;
Node.Data := Pointer(x);
x._AddRef;

x := IUnknown(Node.Data);

procedure TMyForm.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
IUnknown(Node.Data)._Release;
end;

关于delphi - 如何将未知接口(interface)保存到指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20792470/

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