向TreeNT组件添加Unicode支持

时间:2013-01-09 12:25:29

标签: delphi unicode components delphi-xe2

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

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

1 个答案:

答案 0 :(得分:1)

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

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

如果在分配缓冲区或移动原始数据my move过程时没有乘以Sizeof(char),则会被击中。

你最好搜索不明确的类型 - char,pchar,string - 并删除它们,根据上下文明确地用WideChar / PWideChar / UnicodeString或AnsiChar / PAnsiChar / AnsiString替换它们。因此,您将了解可能发生类型转换的位置,并且可能使编译器为您进行类型检查。根据定义,ShortStirng类型(由TreeNT使用的string[255])是非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之前。