TReader/TWriter 支持 unicode 吗?

J. *_* K. 2 delphi

我目前正在花费一些时间将我的网络单元转换为支持 unicode 字符串,到目前为止一切进展顺利(至少我这么认为)。不幸的是,我正在开发Delphi 7,所以我无法测试实际的 unicode 支持,并且我没有较新的 Delphi 版本的文档。

我在代码中使用了一些 TReader 和 TWriter 对象,通过 ReadString 和 WriteString 方法来流式传输字符串。在 D7 上,他们使用等于AnsiString 的String 类型。如果我理解正确的话,在 D2009/D2010 中 String 类型等于UnicodeString。那么有谁知道在 D2009/D2010 中使用 ReadString 和 WriteString 方法时 TReader 和 TWriter是否自动流式传输 UnicodeString 格式的字符串,还是我需要更改某些内容?

Mar*_*ema 5

是的。TReader 和 TWriter 支持 Unicde。事实上,vcl/rtl 只有一部分不支持 Unicode:旧式的 Read(Ln) 和 Write(Ln) 文件访问方法,它们也用于直接从控制台读取和写入。

是的,字符串在D2009+中是UnicodeString。而PChar在D2009+中是PWideChar。因此,如果您坚持使用标准类型,您的代码将可以很好地移植。

只有当您的代码基于一个字符等于一个字节的假设时,您才会遇到麻烦。

更新