其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

新手上路:Delphi接口笔记


发布日期:2021年03月11日
 
新手上路:Delphi接口笔记
//a:=stringToGuid({FBC});

//IChart 和 chart接口各自具有不同的GUID根本不相容

//a:=stringtoGuid({FBC});}

// StringToGuid 用于将 字符串GUID转换为 TGUID

// GuidToString 用于将TGUID转换为字符串guid

//varSupports 判断 Variant 变量 是否支持 TGuid这个接口

procedure TFormbtnGenerateClick(Sender: TObject);

var

Guid: TGUID;

begin

CoCreateGuid(Guid);

MemoLinesAdd(GuidToString(Guid));

end;

Supports 函数 判断是否支持特定接口

CoCreateGuid 这个procedure 可以生成GUID号

GuidToString 将TGUID转换成字符串GUID

StringToGuid 将字符串GUID转换成 TGUID 类型

TGUID 声明

TGUID = packed record

D: LongWord;

D: Word;

D: Word;

D: array[] of Byte;

end;

GUID 例子

{DDADDAAFEBD}

当 interface 变量 赋值为Nil时自动释放

可以将实现某接口的变量作为参数直接赋值给需要这个接口作为参数的过程或函数

接口数组的声明

FEmpArray: Array[ MAX_EMPLOYEES] of IUnknown;

OLE容器中的自动化对象与iMPORT 后的 xxxx_tlbPAS 的通信方式

var

vsht:IUnknown;

isht:_Workbook;

begin

olcRun;

if not (olcState=osRunning) then olcRun;

vsht:=olcOleObjectInterface;//调用OLE容器D的OleObjectInterface 而不是OleObject

isht:=vsht as _Workbook;

eshtConnectTo(isht);

(eshtWorksheetsItem[] as _WorkSheet)CellsItem[]value:=;

eshtApplicationQuit;

eshtDisconnect;

end;

问题

Delphi Import office 的 Graph 对象后为什么会生成 IApplicationIChart……等这样的接口和

Dispinterface 这样的接口有什么区别?另外 Graph中 Dispinterface 的接口可以在注册表中找到相同的GUID而i开头的接口就找不到为什么?另外根据FLAG来看似乎声明成了 HIDDEN DISPABLE

是什么含义?

隐藏接口吗?有什么用?调试? 为什么EXCEL的IMPORT没有?               

上一篇:Delphi程序的时限和加密方法

下一篇:后台调用外部程序的完美实现(Delphi)