我公司的主要应用程序主要是用 C++ 编写的(带有一些 Delphi 代码和组件)。我们将从 RAD Studio 2007 升级到 2010 的下一个版本,大约一周后开始。为了确保升级顺利进行,我需要了解什么?
目前我想到的几点是:
统一码。这个看起来真的很复杂。我们的应用程序包含了 std::string-s 和 AnsiString-s 的可怕组合,以及它们之间的强制转换。我对此有很多问题,例如“wstring 是否能够保存 UnicodeString 可以保存的所有内容,我们是否应该只进行搜索/替换”,或者“我们是否应该完全避免所有 C++ 字符串类型并使用 UnicodeString”,“我们可以将所有事件处理程序更改为使用 String,尽管现有的
.HPPs事件处理程序方法原型被编译器转换为 AnsiString”,一直到诸如“我们应该在所有字符串前面加上 L 前缀,还是编译器足够聪明并启用 Unicode 以使用Unicode 字符串”等。对此的任何见解将不胜感激。我们还需要向后兼容。我们的应用程序使用自己的二进制元组格式,当前将字符串存储为字节数组。我需要升级它以读取旧文件,并且大概还要编写新的 Unicode 字符串。如何处理以二进制格式嵌入的 Unicode 字符串?是否有任何通用方法可以将 UnicodeString 指向一个字节数组,这些字节最初可能写为 ANSI 字节或 Unicode,它会弄清楚它们是什么?
第三方组件。我们主要使用SpTBX,它似乎是兼容的。
项目升级。Codegear 论坛中的标准建议似乎是在升级时手动重新创建所有项目文件。这是一项非常大量的工作(我们的主应用程序中有 7 个项目(主要是库),外加六个 DLL,大量文件。)有什么方法可以自动执行此操作吗?
链接器的外观如何?传统上,我们在链接器随机崩溃或资源耗尽时遇到了很多麻烦,尽管在 2007 年它变得更好了。这是我们的主应用程序被拆分为多个库的原因之一 - 链接器不能(希望,“不能,但现在可以“?)以其他方式处理它。
我知道有一个新的类型库编辑器和格式(它存储 IDL,即文本,并动态生成 TLB?)这如何处理使用 TLB 升级现有 COM 项目?我们有内置在 C++ 应用程序中的 Delphi 代码和 TLB。
还有什么我应该考虑或注意的吗?
我已经找到:
- 2007年和2010年并存。我不确定我是否相信这个答案,因为我之前在同一台机器上遇到过 2006 和 2007 的问题。
- 关于 Unicode 的几个答案:用 2009 编写字符串和通用转换到 Unicode 文本,但没有一个是问题的答案,或者根本不是 C++Builder 特定的部分。
- 这个关于指南升级到 2009的问题,但尽管答案很有帮助,但它们并没有回答上述所有与 Unicode 相关的问题。
- [编辑:添加] RAD Studio 中用于 Unicode 的 Codegear 文档以及转换为 Unicode 时要查找的内容