如何实现别人已定义了的接口?(300分)

  • 主题发起人 主题发起人 lws
  • 开始时间 开始时间
L

lws

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在正在开发一个GIS应用,需要用到ESRI公司开发的MapObject软件(简称MO),MO是
一个ActiveX控件外加许多OLE Automation对象,因为需要定制符号(如铁路线符号),
在MO中,定制符号是一个COM对象,ESRI公司发布了一个类型库(TLB),里面有定义了
定制符号必须实现的接口(定制线符号有相应的线接口),我如何在Delphi中实现已有的
类型库中接口?
按照帮助的说明,我需要创建一个ActiveX DLL,由于MO的帮助都是以VB作例子,我如何
在Delphi中编写类似于VB中的ActiveX DLL?
 
实现接口中的函数定义的说
 
但这样实现似乎不能使用。我用Delphi的Wizard生成COM对象时,看到自动生成了许多
代码,在以*_TLB结尾的pas文件中,Delphi自动生成了CoRailSym类、TRailSymProperties
类和TRailSym类,它们到底有什么用,有什么区别?
 
再说得具体一些,我在手头有一个类型库文件(AFCustom.tlb),里面定义了三个接口,分别
是ICustomLine、ICustomFill、ICustomMarker,我想自己编写程序实现这三个接口。
首先,我利用Delphi的向导,选File->New->ActiveX页下面的ActiveX Library,New一个
新单元(单元名RailSym)后,然后将AFCustom_TLB.pas文件(该文件可以通过
Project->Import Type Library方式产生)加入项目文件中,在单元RailSym
的uses语句上加入AFCustom_TLB,再编写COM对象(我只实现了ICustomLine接口),
这样编完后,编译没问题,但就是不能注册,注册时总出现“Runtime error 217…”错误。
我实在不知道这是什么原因,望各位大侠救我。
 
这个问题我已经自己解决,不好意思,我得把分数收回.
 
多人接受答案了。
 
后退
顶部