将旧的Delphi 7代码迁移到Delphi XE - unicode真的需要吗?

时间:2011-10-24 20:10:47

标签: delphi delphi-7 delphi-xe

我有一个在Delphi 7下运行BDE的旧应用程序,现在已经购买了Delphi XE。我看到很多人说迁移代码的主要问题是改为unicode。可能还有一个支持unicode的数据库。

但是,我真的必须这样做吗?我是否可以坚持使用BDE和一些“旧的字符串格式”?

我希望能在这里快速交换到Delphi Xe,而不是必须使用所有新功能等......

Rgds PM

4 个答案:

答案 0 :(得分:6)

将数据连接到数据库的数据字段没有更改。 TStringField仍然具有AnsiString类型的Value属性,它与旧行为匹配。

当您检查编译器将吐出的所有警告时,您可能会付出很少的努力并保持BDE活着。

除此之外,我建议在可预见的未来用更新的解决方案替换BDE - 不仅仅是因为Unicode。

答案 1 :(得分:5)

很难避免使用新的UnicodeString,这是string现在别名的内容。如果您愿意,可以使用AnsiString编写所有代码,但为什么要这么麻烦?一旦你使用任何非平凡的图书馆(例如RTL,VCL,第三方),你就会逆流而上。如果您确实尝试继续使用AnsiString,那么在我看来,您实际上会让自己的生活变得更加困难。

如果你试一试,你会发现转移到新的Unicode字符串类型并不是一件大事。绝大多数现有代码都将保持不变。

答案 2 :(得分:0)

我从D7到XE做了同样的举动,这一变化是一个杀手。我的应用程序与您的应用程序一样,包括一个数据库 - 在我的例子中,它的Interbase和Interbase Express组件是Delphi的一部分。我选择转移到Unicode,但它并不漂亮。

我阅读了论文,但与我的经验相比,他们似乎不完整甚至可能在某些方面不正确。我认为这些论文是从没有数据库的Delphi应用程序的角度编写的。我相信Interbase Express(Delphi)和Interbase中存在严重错误。我认为至少有一个错误已经在IB和一些Delphi中得到修复 - 如果你转向XE版本。 (我现在不想考虑重复这一点)。

我在我的代码中添加了修复程序,以帮助Delphi。在新闻组和QC人们告诉我,我不明白。最后,有一些变化可以解决这些问题,因此某些地方确实存在问题。

此线程中表达的冲突视图表明与Unicode的混淆。在其中一些问题上,我不知道它是如何工作的,即使已经完成了。但是,我对完全通过它并持有BDE表示怀疑。这很可能会有内置的问题,这些问题无法解决,也无法解决。 QC中有一些条目可以查看一些未解决的问题。

当我的申请在D7时,我的IB数据库是ansi。当第一次转换为Delpi XE时,它似乎运行正常 - 尽管这只是一个简短的检查。 IB支持Unicode,我在那里转换了我的数据。你/你可以用你的数据吗?只有在那之后我才发现问题。我认为任何有意义的Unicode转换意味着您首先将数据存储转换为Unicode,然后转换为Delphi应用程序。

所有这些,如果你不想要unicode,你为什么要搬到XE?它只是升级还是你想要完成的事情?我希望这篇长篇文章有所帮助。

答案 3 :(得分:0)

我们还有很多应用程序使用Delphi-7运行BDE,并且正在考虑跳转到DelphiXE。跳转并不好......如果你想让你的程序在Windows7 64位运行,你需要转换BDE或下载BDE express或其他工具。 BDE存在内存泄漏问题,因此我们已经转换了这些组件,但对于旧产品仍将保留在Delphi-7中,并将Delphi XE用于新项目。 祝你好运。