delphi – 如何将未知接口保存到指针?
发布时间:2020-12-15 04:22:13 所属栏目:大数据 来源:网络整理
导读:我可以将未知接口保存到指针吗? 例如,我有一个未知的接口,并希望将其保存到TreeNode数据? var X : Inknown; 要保存: .... Node:=TreeView1.Items.Add; //Node.data:=x; //compiler won't allow this Node.data:=@x;... 要得到 : ... var //X:=Node.data;
我可以将未知接口保存到指针吗?
例如,我有一个未知的接口,并希望将其保存到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 ... 解决方法
接口是指针,因此您可以按原样存储它(不要使用@运算符).但是,为了确保接口的生命周期,只要节点引用??它,就必须手动递增/递减其引用计数,例如:
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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |