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接口基本学习摘录相关推荐
- delphi的接口support_学习到的关于Delphi的接口
Delphi的接口,据说是很牛X的东西,总体感觉来说,没有想象的那么好.很多Delphi相关的很牛的技术都没有用过. 好吧,其实自己了解也并不多,更不用说很深层次的东西了,讲一讲自己经历的痛苦中得出来 ...
- zw版_Halcon图像库delphi接口文件
zw版_Halcon图像库delphi接口文件 Halcon图像库delphi接口文件,根据安装时用户设置的文件目录不同,会有所差异,笔者一般安装在delphi的import目录下. 参见: ...
- TS基础1(类型定义、接口)-学习笔记
文章目录 TS基础1(类型定义.接口)-学习笔记 什么是TS TS基础1(类型定义.接口)-学习笔记 什么是TS //ts用法var n:number = 10;let str:string = '1 ...
- python测试自动化封装_python接口自动化学习笔记(封装获取测试数据方法)
本篇文章是接于python接口自动化学习笔记(封装方法用于读取excel) 后的拓展,讲解在封装完成excel的数据读取代码后,如何在data层进行使用 首先,我准备了这样一个excel表格用以存储测 ...
- 【DataWhale学习】Day10~13-4章决策树——西瓜书学习摘录笔记
[DataWhale学习]Day10~13-4章决策树--西瓜书学习摘录笔记 本文参考了周志华老师的西瓜书,李航老师的统计学习方法,谢文睿大佬的南瓜书(无推导尿点,仅加深理解食用) 决策树模型 决 ...
- 惹某人de集训第4周学习摘录(习题+感悟)
我是个没有感情的WA题机器 (一)课堂内容 创建二叉树 根据先序遍历和中序遍历建树输出后序遍历 贪心!贪心! 归并排序经典题 题目描述 Input Output Sample Input Sample ...
- AXI接口协议学习总结
AXI接口协议学习总结 下面将AXI接口协议学到的相关内容整理如下 一.AXI接口协议定义 AXI是Advanced eXtensible Interface的缩写,译为高级可扩展接口协议,是ARM公 ...
- Java面向对象:接口的学习
本文介绍了Java中接口的基本语法, 什么是接口, java中的接口 语法规则, 接口的使用,接口的特性,如何实现多个接口,接口间的继承,以及抽象类和接口的区别 Java接口的学习 一.接口的概念 二 ...
- 【微机原理与接口技术学习实践】汇编语言程序设计初步——debug编写调试指令序列
halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言.指点 [微机原理与接口技术学习 ...
最新文章
- AngularJs学习笔记--Forms
- 谷歌自揭“家丑”:医疗AI实验室表现超神,临床结果却不佳
- Android -- Volley解析
- JAVA异常处理分析(中)
- 自然常数 e 的理解与应用
- android 调用java接口_android调用java的web service接口
- malware analysis、Sandbox Principles、Design Implementation
- fullcalendar小结
- jquery 学习笔记(二)
- php disable-ipv6,強迫 PHP Curl 使用 IPv4 , 忽略 IPv6
- Linux基础学习笔记整理——第二章 管理文件和目录
- 初探华尔街期权量化交易的奥秘
- python中的ln函数_python3中涉及数字的各种函数
- SVN版本控制—branches、trunk、tag篇
- Android 实现水波纹效果
- 人工智能和中国国家人工智能发展战略
- 剑指offer题目详细版本
- Python基础知识之函数篇
- Postman+Newman执行自动化测试
- 2022-02-19 MySQL分页查询获取总数