Delphi 接口笔记

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

// a:=stringToGuid('{000208FB-0000-0000-C000-000000000046}');

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

// a:=stringtoGuid('{000208FB-0001-0000-C000-000000000046}');}

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

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

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

procedure TForm1.btnGenerateClick(Sender: TObject);

var

Guid: TGUID;

begin

CoCreateGuid(Guid);

Memo1.Lines.Add(GuidToString(Guid));

end;

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

CoCreateGuid 这个procedure 可以生成GUID号。

GuidToString 将TGUID转换成字符串GUID

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

TGUID 声明

TGUID = packed record

D1: LongWord;

D2: Word;

D3: Word;

D4: array[0..7] of Byte;

end;

GUID 例子:

{D2552D95-A2D7-48D8-AA27-F08E810779BD}

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

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

接口数组的声明:

FEmpArray: Array[1 .. MAX_EMPLOYEES] of IUnknown;

OLE容器中的自动化对象与iMPORT 后的 xxxx_tlb.PAS 的通信方式。

var

vsht:IUnknown;

isht:_Workbook;

begin

olc.Run;

if not (olc.State=osRunning) then olc.Run;

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

isht:=vsht as _Workbook;

esht.ConnectTo(isht);

(esht.Worksheets.Item[1] as _WorkSheet).Cells.Item[1,1].value:=25;

esht.Application.Quit;

esht.Disconnect;

end;

问题:

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

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

是什么含义?

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

接口真的是好乱啊:

导入每个COM组件的XXXX_TLB.pas每个对象都有自己的模式?并不相同?怎么回事?不明白!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航