当前位置:  开发笔记 > 编程语言 > 正文

Delphi和COM:TLB和维护问题

如何解决《Delphi和COM:TLB和维护问题》经验,为你挑选了3个好方法。

在我工作的公司中,我们使用C#开发所有GUI,但应用程序内核主要是在Delphi 5中开发的(由于历史原因),在COM +中使用了很多组件.与这个非常具体的应用相关,我有两个问题:

Delphi和/或COM中经验丰富的人,您是否有任何工作场所可以使用错误的TLB接口?一些错误是:IDE在大型TLB的编辑过程中崩溃,丢失方法ID,TLB损坏等.在这里,我们还没有找到任何好的解决方案.实际上我们尝试升级做新的2007版本.但是新的IDE TLB接口具有我们之前发现的相同错误.

你如何控制TLB版本?TLB文件采用二进制格式,冲突解决方案很难做到.我们尝试将接口描述导出到IDL并提交到CVS,但我们没有找到任何使用Delphi从IDL生成TLB的好方法.另外,Microsoft提供的MIDL工具没有正确解析我们从delphi导出的IDL文件.

Roddy.. 10

我想你应该好好看看Delphi 2009.

Delphi 2009对COM支持进行了更改,包括基于文本的二进制TLB文件替换.

您可以在Chris Bensen的博客上阅读更多内容.



1> Roddy..:

我想你应该好好看看Delphi 2009.

Delphi 2009对COM支持进行了更改,包括基于文本的二进制TLB文件替换.

您可以在Chris Bensen的博客上阅读更多内容.



2> Barry Kelly..:

在遥远的过去(在我开始为CodeGear工作之前),我放弃了IDE提出的奇怪的Delphi化IDL语言,并编写了我自己的IDL并使用MS midl编译它.这很有用; 唯一的问题,IIRC,确保dispids(id属性)在属性getter和setter的自动化接口(dispinterfaces)上是正确的 - 有一些tlibimp预期的不变量,但是midl不能保证.

但是,既然Delphi 2009使用了一个安全的midl语法子集,并且在盒子中包含了这个midl的编译器并集成到IDE中,那么这些问题应该已成为过去.



3> Toby Allen..:

我们刚刚安装了Delphi 2009,它似乎确实改进了对Typelibraries的支持.然而,我已经与COM和类型库合作了很长一段时间,这是我多年来发现的一般陷阱.我同意它非常漂亮,并且一直到Delphi 2006(我们使用2009之前的版本).

在打开之前始终将每个文件都可写.这可能听起来很明显,但是当使用源代码控制时,我们有时会忘记这样做并尝试在打开文件后删除readonly标志 - Delphi无法解决这个问题.打开前确保tlb是可写的.

如果要编辑独立的类型库,则必须打开一个项目.出于某种原因,如果您自己打开一个类型库,它将无法保存.创建一个空白项目,然后打开您的类型库.由于某种原因,这允许保存类型库.

如果您的类型库由应用程序使用,或者COM +确保在打开类型库之前关闭应用程序或禁用COM +.任何打开的应用程序都将阻止保存类型库.

不过,我认为您最好的解决方案可能是升级.您也获得了Unicode支持.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有