2006/08/03 | 增加对 BDS 2006 支持不容易
类别(俺没分类) | 评论(0) | 阅读(79) | 发表于 22:51
BDS 2006 看似全面兼容旧版本的 OTA,可毕竟变了不少东西,CnWizards 的许多旧功能在 BDS 2006 上就显得不太对头,其中又以 OTA 中的 Repository 接口和其 Creators 系列接口为甚。

BDS 2006 可同时支持多种语言,因此原来 CnWizards 中许多编译期确定语法标志的东西都失效了,都得改成运行期判断,也就是说许多{$ IFDEF DELPHI}等类似的东西都得改成 IsDelphiRuntime 的函数判断(这个函数还是自己凑合着写的。)一处一处替换改过去,检查,还颇费了不少事。

关于 Repository 专家,出现了第一处不兼容的情况:IOTAUnitWizard 原先必须实现 IOTAFormWizad 才能出现在 New 对话框中,但 BDS 2006 就改成了 IOTAProjectWizard,即使你的专家只生成普通单元也一样。

第二处问题是由于 IDE 的动态语言的支持而带来的,BDS 2006 的 IDE 支持 Delphi.Net, Delphi.Win32,C++,C#,你的专家能产生啥工程?这里没有默认的说法,如果你的专家创建工程的时候没有实现 IOTAProjectCreator80 而没有返回一个合适的 Personality,那么对不起,不理会您。

第三个无法解决的问题也不知道是不是 BDS 2006 的 Bug,一个纯 Unit 的生成专家,生成过程中 IDE 传进来的 Module 名等总是空,没法得到名字就没法生成合法的单元,这问题研究了一个多礼拜也没效果,跟踪 IDE 也跟不出什么特例,后来还是周兄想出个先提示保存的主意,算是绕过去了。

到现在还不敢说全面支持 BDS 2006,只能等待在测试中发现问题了。
0

评论Comments

日志分类
首页[233]
俺没分类[233]