我目前正在花费一些时间将我的网络单元转换为支持 unicode 字符串,到目前为止一切进展顺利(至少我这么认为)。不幸的是,我正在开发Delphi 7,所以我无法测试实际的 unicode 支持,并且我没有较新的 Delphi 版本的文档。
我在代码中使用了一些 TReader 和 TWriter 对象,通过 ReadString 和 WriteString 方法来流式传输字符串。在 D7 上,他们使用等于AnsiString 的String 类型。如果我理解正确的话,在 D2009/D2010 中 String 类型等于UnicodeString。那么有谁知道在 D2009/D2010 中使用 ReadString 和 WriteString 方法时 TReader 和 TWriter是否自动流式传输 UnicodeString 格式的字符串,还是我需要更改某些内容?
是的。TReader 和 TWriter 支持 Unicde。事实上,vcl/rtl 只有一部分不支持 Unicode:旧式的 Read(Ln) 和 Write(Ln) 文件访问方法,它们也用于直接从控制台读取和写入。
是的,字符串在D2009+中是UnicodeString。而PChar在D2009+中是PWideChar。因此,如果您坚持使用标准类型,您的代码将可以很好地移植。
只有当您的代码基于一个字符等于一个字节的假设时,您才会遇到麻烦。
更新:
白皮书 Delphi 和 Unicode,作者:Marco Cantu:http://edn.embarcadero.com/article/38980
将旧应用程序迁移到支持 Unicode 的 Delphi 2010,作者:Cary Jensen:http://edn.embarcadero.com/article/40472
新白皮书:面向凡人的 Delphi Unicode 迁移,作者:Cary Jensen:http://edn.embarcadero.com/article/40307