Ros*_*erg 34 delphi delphi-7 delphi-2010 delphi-xe
我们公司有一个已经开发了十多年的软件,因此有一些真正过时的东西.它仍然非常实用,但是我看到了Delphi XE的新功能,它让我想切换.问题是源代码本身超过300mb的.pas文件(总共1gb与组件等).
我们正在使用自定义组件,旧的jvcl和最新的devexpress.
如果我决定从Delphi 7迁移到Delphi XE,我有多难以期待事情发生?
谢谢.
klu*_*udg 29
唯一真正的问题是转换为Unicode.您应该了解如何在Delphi中实现Unicode支持 - 从Marco Cantu 白皮书:Delphi和Unicode开始
在不知道实际代码的情况下,无法估计将旧应用程序升级到Unicode所需的工作量.如果您以标准方式使用字符串类型,转换将很容易.现在不推荐使用字符串类型的任何低级技巧(比如在字符串中存储二进制数据),并且应该重写相应的代码.
Wou*_*ick 15
一些小工具要么不需要进行任何修改就可以迁移,或者只需要几个unicode修复就可以运行它.
但是,如果您的代码库与您解释的一样庞大,那么您不应该完全依赖于此处的任何人告诉您的内容.只需获取XE的副本并加载代码即可.看看你遇到了什么问题,以了解它将花费多少努力.
此刻我将所有代码移植到XE(甚至是旧项目).我尽可能地重复使用相同的库,所以一旦我转换了大部分库,将Delphi 7中的应用程序"移植"到Unicode Delphi通常只是一个重复的任务,要么处理库中更新的接口,要么修复编译器错误和警告.
我遇到的最常见的错误:
Unicode的东西.这将花费90%的时间.如果代码执行了大量的低级字符串处理,这很烦人,但是通过添加一些类型转换可以很容易地修复大多数问题.
你使用时编译器婊子c in ['a'..'z']
.你应该CharInSet()
用于unicode字符串.
如果设置ShortDateFormat,则会收到编译器警告,您应该使用FormatSettings.ShortDateFormat.在新代码中,这是一个好主意.如果你正在移植,如果你只是想要开始,那么最初就要忽略它.
此外,您可能会将第三方库升级到较新版本,因此您无需自行移植.那些改变他们的界面或工作的人并不罕见,所以我下载了一些试用版本以查看已经改变的内容.
您在其中一条响应注释中提到了SQL ...您的数据库是否支持unicode?如果没有,你可能会参与很多工作.您可能需要即时转换数据库或为您的用户制作转换工具.您可能需要升级数据库,甚至切换到其他内容.例如,DBISAM不支持unicode,但供应商生产ElevateDB.过渡并非微不足道.而其他一些像Hyperstring这样主要用汇编语言编写的库是另一个痛处.
我一直在做很多转换.
您应该通过使您当前的代码库可测试来做好准备.最好使用自动化单元测试,但至少要有一个好的最终用户测试计划.
然后你应该计划最大的部分:你的应用程序和数据库的Unicode转换.
最后,主要的,但可能非常耗时的方面:
当你移植它时,是时候改变一些事情:因为你已经看到了整个代码库,现在你知道你的弱点在哪里,所以你可以开始重构它们并获得比以前更好的应用程序.
我的项目大约有一百万行代码,我最近从CB9移植到了XE.为了减少工作量,我首先重写了很多,所以我不再依赖第三方组件包,然后仔细检查所有字符串相关(unicode),然后才转移到XE.准备工作很多,实际的端口相对容易.