Delphi转换Unicode问题

Delphi转换Unicode问题,delphi,Delphi,我们有大型商业应用程序,我们希望从Delphi 6转换到2010年。大约10个第三方组件集,全部带有源代码。。。我听到过关于2010年Unicode的警告-有人有经验或建议吗?我最近也遇到过同样的情况。你主要需要注意应用程序的“边缘”。INI文件、文件I/O、日志文件等可以从delphi中获得API调用,因为它们现在连接了unicode API调用。检查每个第三方组件集,确保它们至少已准备好迎接Delphi 2009…更好的是2010。甚至我对数据库的使用也不是一个问题……几乎所有的东西都能立即

我们有大型商业应用程序,我们希望从Delphi 6转换到2010年。大约10个第三方组件集,全部带有源代码。。。我听到过关于2010年Unicode的警告-有人有经验或建议吗?

我最近也遇到过同样的情况。你主要需要注意应用程序的“边缘”。INI文件、文件I/O、日志文件等可以从delphi中获得API调用,因为它们现在连接了unicode API调用。检查每个第三方组件集,确保它们至少已准备好迎接Delphi 2009…更好的是2010。甚至我对数据库的使用也不是一个问题……几乎所有的东西都能立即工作。这没什么大不了的。任何依赖于角色大小的内容都应该进行检查

实际上,最令人担忧的转变是2007年或之前-->2009年或之后

有很多关于它的讨论/博客文章。你可以读,读,读…或者你可以开始&看看会发生什么。(两者我都做了一些)。我确信在讨论您的问题时会出现“堆栈溢出”问题。我不是在假装详细描述可能发生的事情


这并不像听起来那么可怕。

您可以阅读许多可用的资源,您将协助从Delphi 6迁移到Delphi 2009/2010(Unicode)

您可以使用这些文章作为指南

  • (此实用程序有望帮助您收集有用的统计数据 将您的旧应用程序迁移到 Unicode。)

再见。

您将在这些问题中找到一些有用的答案:

此外,为了物有所值,我购买了。在短短几周内,我就可以从Delphi 4到Delphi 2009进行一次相对流畅的对话

但是,我建议您确保您的第三方软件包具有Delphi 2009升级,否则您可能会遇到一些实际困难。转换自己的代码是一回事。转换别人的是另一回事

我使用两个第三方软件包,都带有源代码。两者都有可用的升级,其中一个的开发人员写道,他很难将非常复杂的组件升级到Delphi2009的Unicode。他花了几个月的时间,但他完成了。因此,当我进行升级时,我在实现他的组件方面没有什么问题

大约10个第三方组件集,全部带有源代码

我要补充的一点是,如果组件不支持Delphi2009/2010,不要试图通过破解代码来升级它

以下是我发布的内容:

看,马可·坎特写的白皮书,我猜 ,由乔尔写

一个陷阱是默认的Win32 API调用已映射为使用W(宽字符串)版本而不是A(ANSI)版本,例如
ShellExecuteA
,如果您的代码正在执行复杂的指针代码,假设内部布局为
AnsiString
,则它将中断。退一步是用
PAnsiChar
替换
PChar
Char
替换
AnsiChar
string
替换
AnsiString
,并在Win32 API调用的末尾为该部分代码追加一个。在代码实际编译并正常运行后,您可以重构代码以使用
字符串
UnicodeString


我必须把凯里·詹森的这篇文章添加到其他提到的文章中。它的标签是:“Delphi Unicode为普通人迁移:前线的故事和建议”(英文)。

正如你在它的标题中所看到的,你会发现许多经验、提示和技巧。我想这就是你问题的答案。仔细阅读后,你肯定知道下一步该做什么。:)


在:

中可以找到另一个需要注意的问题,即使用带字符串的变量类型和字符串的VarType函数测试:需要使用varUString而不是varString

假设AValue的类型为Variant,并且已分配Unicode字符串值,则以下操作将不起作用:

  if VarType(AValue) = varString then ...
需要改成

  if VarType(AValue) = varUString then ...

别忘了我在CodeRage4上的Unicode会话,它包含了更多的参考资料:@Jeroen,伟大的视频,补充;)