Delphi

本类阅读TOP10

·分布式网络考试系统原型分析及实现
·游戏外挂设计技术探讨①
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·试题库开发中非文本数据的处理
·如何将几个DBGRID里的内容导入同一个EXCEL表中....的问题
·如何使用Delphi设计强大的服务器程序
·工人线程中关闭窗体的实现
·用DLL方式封装MDI子窗体。
·支持XP下托盘栏气球提示的托盘单元

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
Delphi 接口笔记

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

//  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每个对象都有自己的模式?并不相同?怎么回事?不明白!




相关文章

相关软件