我想学习一个插件框架,但是那个框架里面大量用到了接口,于是不得不把接口看一下了。总感觉接口编程这一块非常的绕,每一行都注释了。

unit Unit1;

interface

uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
StdCtrls; type
// 父接口
IGreetable = interface
['{FE5A34E5-21AB-4120-971B-FDC3241AD55D}']
// 用于返回一段文本
function SayHello: string;
end; TMan = class(TObject, IGreetable)
function SayHello: string;
// 接口都会有的3个函数(QueryInterface,_AddRef,_Release)
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end; TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
// 弹出一段文本
procedure Greeting(Intf: IGreetable);
{Private declarations}
public
{Public declarations}
end; var
Form1: TForm1; implementation {$R *.DFM} // 这里实现自己定义的_AddRef、_Release和QueryInterface方法 // 用于查找接口
function TMan.QueryInterface(const IID: TGUID; out Obj): HResult;
begin
// 找到返回0,找不到返回'No such interface supported'
if GetInterface(IID, Obj) then
Result :=
else
Result := Windows.E_NoInterface;
end; // 接口调用计数
function TMan._AddRef: Integer;
begin
Result := -
end; // 接口释放计数
function TMan._Release: Integer;
begin
Result := -
end; // 客户函数,返回一段文本
function TMan.SayHello: string;
begin
Result := 'Hello';
end; procedure TForm1.Greeting(Intf: IGreetable);
begin
// 输出一段话
ShowMessage(Intf.SayHello);
end; procedure TForm1.Button1Click(Sender: TObject);
var
// 定义一个父接口
Intf: IGreetable;
begin
// 子接口创建
Intf := TMan.Create;
// 调用的是子接口中的Greeting函数
Greeting(Intf);
end; end.

01.Delphi最简单的接口的更多相关文章

  1. delphi指针简单入门

    delphi指针简单入门:         看一个指针用法的例子:     1         var     2             X,   Y:   Integer;       //   ...

  2. 如何简单实现接口自动化测试(基于 python) 原博主地址https://blog.csdn.net/gitchat/article/details/77849725

    如何简单实现接口自动化测试(基于 python) 2017年09月05日 11:52:25 阅读数:9904 GitChat 作者:饿了么技术社区 原文:如何简单实现接口自动化测试(基于 python ...

  3. SoapUI 利用SoapUI进行简单的接口并发测试

    利用SoapUI进行简单的接口并发测试 by:授客 QQ:1033553122 测试环境: SoapUI Pro 5.1.2 步骤如下 1.   把请求添加到测试套件 1.1.     途径1 1.新 ...

  4. 简单实现接口自动化测试(基于python+unittest)

    简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Pytho ...

  5. day22 01 初识面向对象----简单的人狗大战小游戏

    day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战   怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...

  6. 落网数据库简单查询接口 caddy+php7+mongodb

    落网数据库简单查询接口 一个简单的DEMO,使用了caddy + php7 + mongodb 数据库&接口设计 来自 https://github.com/Aedron/Luoo.spide ...

  7. 用flask写一个简单的接口

    用falsk写一个简单的接口,这个接口的数据本来是爬虫爬取的数据,但是今天只写一个flask接口,数据就用测试数据好了. import random import re import time imp ...

  8. delphi DBGrid简单自绘(字体颜色、背景等)

    delphi DBGrid简单自绘(字体颜色.背景等)  从网上找的代码 应该是C#写的,其实delphi 的操作类似: 1 2 3 4 5 6 7 8 9 10 11 12 13 void __fa ...

  9. 【JMeter_05】创建第一个简单的接口脚本

    聚合数据:提供了很多开放的API,可以去练习使用https://www.juhe.cn/ 如果有小伙伴对HTTP协议不是很了解,可以看下这里 http://home.ustc.edu.cn/~xie1 ...

随机推荐

  1. C语言的变量存储方式和生存期

    2020.2.28日,封城一个多月了,紧邻毕业期,我在家抽空学习一下C. 看到了变量的存储方式和生存期这一章节,下面就是我整理的内容 下面是用于理解静态局部变量这个概念所写的代码,主要是需要分析一下函 ...

  2. ZOJ4103 Traveler(2019浙江省赛)

    构造+思维~ #include<bits/stdc++.h> using namespace std; ; int N,M,T; int visit[maxn]; stack<int ...

  3. Java基础知识笔记第一章:入门

    java的地位: java具有面向对象,与平台无关,安全,稳定和多线程等优良特性,是目前软件设计中优秀的编程语言. java的特点: 1.简单 2.面向对象 3.平台无关 jre(java runti ...

  4. day11 作业

    # 1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件), # 要求登录成功一次,后续的函数都无需再输入用户名和密码 # FLAG = False # def login(func): ...

  5. 转--Spring MVC : Java模板引擎 Thymeleaf (三)

    原文:http://www.csdn.com/html/topnews201408/49/1349.htm 下面以构造一个表单开始,讲解 Thymeleaf的用法.为了演示方便,还是以经典的注册为例. ...

  6. request和response对象如何解决中文乱码问题?

    出现中文乱码的问题,一般的原因编码和和解码不一致造成的. /* 乱码:编码和解码不一致导致的 GET:你好 POST:?????? tomcat版本:8.5及以上版本 GET请求方式,request对 ...

  7. uchome后台系统配置分析

    uchome后台系统配置分析 时间:2012-09-06 17:14来源:www.chinab4c.com 作者:uchome专家 uchome后台系统设置,和ecshop后台系统设置不大一样.uch ...

  8. Autoit里用多进程模拟多线程

      一直以来Autoit都不支持多线程,因此一些需要同时运行多个循环的操作也就无法实现.这个问题在其它的某些语言里也经常出现,解决的方法就是使用多进程. 所谓多进程,就是同时运行多个子进程,每个子进程 ...

  9. python中metaclass的工作原理

    class TMetaclass(type): def __new__(cls, name, bases, attrs): print(cls, name, bases, attrs) return ...

  10. 攻防世界web进阶区(2)--记一次sql注入

    题目地址:http://111.198.29.45:56094 这是一道sql注入题. 试试1' order by 3#,发现页面显示正常,将3换为4时,页面报错,则说明含有3个字段. 接下来判断输出 ...