delphi接口基本学习摘录

声明接口
        IMyInterface = interface(IInterface) 
         ['{63E072DF-B81E-4734-B3CB-3C23C7FDA8EA}'] 
              function GetName(const str: String): String; stdcall;
              function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
              function _AddRef: Integer; stdcall;  //使接口引用数加1。
              function _Release: Integer; stdcall;  //使接口引用数减1,当小于等于0时作释放动作。
        end;
           
说明:如果有继续关系则在括号里填父接口,否则省却,如:IMyInterface = interface这样就行。
说明:GUID可选,如要实现具有COM特性的接口则需要加上
             zc:接口GUID,最好加上,最好分离功能及其封装。

接口中所有的数据成员都是public访问限制,数据成员指定其为不能私有或其他的域成员。
接口中的方法只能有声明,看上去像没有构造和析构方法的纯虚类。

type
  IInterface = interface
    ['']
    function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
end;

该接口实现了QueryInterface,_AddRef,_Release,凡是继承于该接口,则不需要声明
该三个虚函数。
  在实现新接口的类中,也要从TInterfacedObject 后继承,原因在于该类实现以上函数的
实现部分,不要考虑QueryInterface等完成。如下:
type
  TNewInterfaceClass = class(TInterfacedObject, INewInterface)
   ...
end;

接口的实现
         接口服务是由类来实现的。
                TIntfClass = class(TObject, IMyInterface)
                private
                    FCounter: Integer;
                    FRefCount: Integer;
                public
                    function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
                    ...
                end;

获取接口
    a. 使用类型转换。
        如:var aIntf: IMyInterface;
               begin
                       aObj := TIntfClass.Create;
                        try
                            aIntf := (IMyInterface(aObj);
                                ...
    b. 利用Delphi编译器内建机制。 如:aIntf := aObj。
    c. 利用对象的QueryInterface方法。
           如
                 OleCheck(aObj.QueryInterface(IID, aIntf)); 只能存取有GUID的COM接口。
   d. 利用as操作符。
         使用as操作符必须符合下面条件:
    1.接口要从IInterface接口继承下来。
    2.有GUID值
      在Delphi7中接口的实现类还必须是从TInterfacedObject继承下来才行,
      如  TIntfClass = class(TInterfacedObject, IMyInterface)
       zc: 最好用该方法,考虑使用接口有其他语言开发l情况下的使用。

接口和对象生命期            
  对接口直接=nil即可,freeAndNil则不需要。因接口特性,会计数减少1

接口的委托(Interface Delegation)
分为两种:
1. 对象接口委托   
2. 类对象委托。
(略)

delphi接口基本学习摘录相关推荐

  1. delphi的接口support_学习到的关于Delphi的接口

    Delphi的接口,据说是很牛X的东西,总体感觉来说,没有想象的那么好.很多Delphi相关的很牛的技术都没有用过. 好吧,其实自己了解也并不多,更不用说很深层次的东西了,讲一讲自己经历的痛苦中得出来 ...

  2. zw版_Halcon图像库delphi接口文件

    zw版_Halcon图像库delphi接口文件 Halcon图像库delphi接口文件,根据安装时用户设置的文件目录不同,会有所差异,笔者一般安装在delphi的import目录下.      参见: ...

  3. TS基础1(类型定义、接口)-学习笔记

    文章目录 TS基础1(类型定义.接口)-学习笔记 什么是TS TS基础1(类型定义.接口)-学习笔记 什么是TS //ts用法var n:number = 10;let str:string = '1 ...

  4. python测试自动化封装_python接口自动化学习笔记(封装获取测试数据方法)

    本篇文章是接于python接口自动化学习笔记(封装方法用于读取excel) 后的拓展,讲解在封装完成excel的数据读取代码后,如何在data层进行使用 首先,我准备了这样一个excel表格用以存储测 ...

  5. 【DataWhale学习】Day10~13-4章决策树——西瓜书学习摘录笔记

    [DataWhale学习]Day10~13-4章决策树--西瓜书学习摘录笔记 本文参考了周志华老师的西瓜书,李航老师的统计学习方法,谢文睿大佬的南瓜书(无推导尿点,仅加深理解食用) 决策树模型 ​ 决 ...

  6. 惹某人de集训第4周学习摘录(习题+感悟)

    我是个没有感情的WA题机器 (一)课堂内容 创建二叉树 根据先序遍历和中序遍历建树输出后序遍历 贪心!贪心! 归并排序经典题 题目描述 Input Output Sample Input Sample ...

  7. AXI接口协议学习总结

    AXI接口协议学习总结 下面将AXI接口协议学到的相关内容整理如下 一.AXI接口协议定义 AXI是Advanced eXtensible Interface的缩写,译为高级可扩展接口协议,是ARM公 ...

  8. Java面向对象:接口的学习

    本文介绍了Java中接口的基本语法, 什么是接口, java中的接口 语法规则, 接口的使用,接口的特性,如何实现多个接口,接口间的继承,以及抽象类和接口的区别 Java接口的学习 一.接口的概念 二 ...

  9. 【微机原理与接口技术学习实践】汇编语言程序设计初步——debug编写调试指令序列

    halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言.指点 [微机原理与接口技术学习 ...

最新文章

  1. AngularJs学习笔记--Forms
  2. 谷歌自揭“家丑”:医疗AI实验室表现超神,临床结果却不佳
  3. Android -- Volley解析
  4. JAVA异常处理分析(中)
  5. 自然常数 e 的理解与应用
  6. android 调用java接口_android调用java的web service接口
  7. malware analysis、Sandbox Principles、Design Implementation
  8. fullcalendar小结
  9. jquery 学习笔记(二)
  10. php disable-ipv6,強迫 PHP Curl 使用 IPv4 , 忽略 IPv6
  11. Linux基础学习笔记整理——第二章 管理文件和目录
  12. 初探华尔街期权量化交易的奥秘
  13. python中的ln函数_python3中涉及数字的各种函数
  14. SVN版本控制—branches、trunk、tag篇
  15. Android 实现水波纹效果
  16. 人工智能和中国国家人工智能发展战略
  17. 剑指offer题目详细版本
  18. Python基础知识之函数篇
  19. Postman+Newman执行自动化测试
  20. 2022-02-19 MySQL分页查询获取总数

热门文章

  1. 文件内容、关键字匹配,split 和 indexOf 均可实现
  2. LSA(链路状态通告)类型
  3. .Net Compact Framework 小技巧(1)
  4. hdu 4252(单调栈)
  5. NYOJ 741 数学家ST
  6. 池化层的back proporgation 原理
  7. java 学习知识汇总
  8. sendmail启动报错
  9. [bzoj1187][HNOI2007]神奇游乐园
  10. hdu_5085_Counting problem(莫队分块思想)