0

我在我的应用程序中使用TreeNT组件。我正在将应用程序迁移到 XE2。我已经在 XE2 中重新编译了组件。运行时它不会在窗口中显示节点标题。

您能给我一些提示以手动将第三方组件迁移到 XE2 吗?

4

1 回答 1

1

Delphi中有很多关于Unicode的文章组件的移植与移植应用程序没有什么不同。找到并阅读它们。真的会。

你会被 PChar -> PAnsiChar/PWideChar 模糊性击中,特别是如果你在 {$T-} 模式下工作。检查编译时是否键入了指针。

move如果在分配缓冲区或在我的过程中移动原始数据时没有在 Sizeof(char) 上进行乘法运算,就会受到打击。

您最好搜索模棱两可的类型 - char、pchar、string - 并删除它们,根据上下文将它们显式替换为 WideChar/PWideChar/UnicodeString 或 AnsiChar/PAnsiChar/AnsiString。因此,您既可以了解类型转换可能发生的位置,也可以让编译器为您进行类型检查。ShortStirng 类型(string[255]由 TreeNT 使用)根据定义是非 Unicode。当您访问它时,请注意每个地方。

如果您从 Windows DLL 直接导入并在 Windows 函数名称处指定“A”,您会受到打击。这很容易导致 ANSI 函数获取意外的 UTF-16 数据。

尝试搜索是否有人已经这样做了。例如http://code.google.com/p/keynote-nf/source/browse/trunk/3rd_party/treent/TreeNT.pas - 但这在 2007 年结束,在 Delphi RTL 中的 Unicode 之前。

于 2013-01-10T08:02:56.143 回答