扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
IMyInterface = interface(IInterface) //说明(1) ['{63E072DF-B81E-4734-B3CB-3C23C7FDA8EA}'] //说明(2) function GetName(const str: String): String; stdcall; function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; //说明(3) function _AddRef: Integer; stdcall; //使接口引用数加1。 function _Release: Integer; stdcall;//使接口引用数减1,当小于等于0时作释放动作。 end; |
TIntfClass = class(TObject, IMyInterface) private FCounter: Integer; FRefCount: Integer; public function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; ... end; |
var aIntf: IMyInterface; begin aObj := TIntfClass.Create; try aIntf := (IMyInterface(aObj); ... |
TIntfClass = class(TInterfacedObject, IMyInterface) |
var i: Integer; aObj: TIntfClass; aIntf: IMyInterface; begin aObj := TIntfclass.Create; try aIntf := aObj; aIntf.GetName... finally aIntf := nil; FreeAndNil(aObj); end; |
function TIntfClass._Release: Integer; begin Result := InterlockedDecrement(FRefCount); end; |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者