我被要求重新开放我在1998/99在Delphi 3中编写的一个项目,从那时起它一直运行稳定.我有一个老旧的Windows 98机器上的Delphi 3代码库,它只是为了让这个项目保持活力.显然,在进行任何重大修改之前,我想将源代码库带入21世纪.
我很高兴地注意到Delphi 2010(我目前在2007年)声称能够从Delphi 2导入项目.有没有人有从Delphi 3导入大型项目的经验?我可以期待这是一个简单的过渡,还是一个困难的过渡?
此外,原始项目使用第三方组件,包括DBISAM,WPTools和TMS Planner.我注意到所有这些仍然可用于最新版本的Delphi.假设我首先将新版本安装到Delphi 2010中,我是否可以期望我的应用程序中使用这些组件的部分也被翻译?我知道至少WPTools已经改变了它的一些组件结构和接口,因为原始应用程序中使用的版本很明显我会有一些重新编码,但程序的那些部分的失败会阻止我的代码库正在升级?
应该很有可能进行这种迁移,并且根据代码的编写方式,它可能是痛苦的,也可能是无痛的.不幸的是,在开始迁移过程之前,不容易说出哪些内容.
我要做的第一件事是确保所有DFM文件都转换为它们的文本表示.我相信这在Delphi的后续版本中设置为默认值,但我记得Delphi 3使用的是二进制格式.在delphi 3 bin目录中应该有一个名为DFMConvert的实用程序文件,它允许您将DFM转换为文本.您希望这样做的原因是,如果由于组件未加载而必须手动编辑DFM,则可以确保您可以阅读源代码.您不仅会跳转Delphi的版本,而且还会跳过您使用的每个组件的版本,并且可能存在一些可能导致组件加载失败的不兼容性.我发现如果是这种情况并且您有一个"新"版本,那么直接使用编辑DFM源并将测试表单与其上的组件与旧版本包含的内容进行比较.删除任何不合适的(或重命名),然后尝试再次加载表单.
正如Frabricio所提到的,如果您使用变体,那么您需要对您的使用条款进行微调.
好消息是,一旦你更正了components/uses子句,你的代码本身应该可以正常工作.如果你直接进入Delphi 2010,你唯一的另一个问题就是Unicode,并且编译器通过错误和警告将所有这些问题都指向了你.
正如你有D2007并假设所有这些组件集都带有D2007 dcus,我建议你先尝试在D2007上重新打开代码库.然后,转到D2010,因为实际VCL的Unicode功能 - 这可能会产生一些迁移问题(我不会在这里讨论,因为它在网上和SO上都有深入的讨论).
我会说,因为在D5和D7之间的某个地方(没有准确记录)发生了rtl的单元重组(创建了Variants.pas单元和许多OTAPI单元改变了名称等).这就是你出现第一个问题的地方.编辑:不仅Variants被重新定位,而且还有很多IDE集成 - 以避免未经许可的代码被部署.如果您有一些OTAPI代码(例如,允许在继承表单上发布属性的代码),则需要将其重定位到包项目中.
正如skramradt所说,你可能不得不处理二进制DFM的事情....
之后,如果一切正常,请转到Unicode.根据应用程序,它可以很容易或不容易.对于我的,不是很烦恼.但我知道还有其他人面临比我更大的问题.