繁体   English   中英

在 Delphi XE 中读取 TStream 时出现问题

[英]Problem reading a TStream in Delphi XE

在之前版本的Delphi中,代码如下:

   var InBuf: array[1..45] of Byte;

   Count := InStream.Read(InBuf, SizeOf(InBuf));

用正确的值填充变量 InBuf (每个字节都有一个值)。 现在在 Delphi XE 中,数组的第二个字节为 0,我想是因为 Byte 数据类型是两倍大,因为它在 Delphi 中的 Unicode 性质但是,我的流已经生成并且需要通过这个过程,所以如果有人遇到这个问题,我需要另一种类型(也许?),它是字节大小的一半或另一种解决方案。 谢谢

这里发生的情况,有 >99% 的可能性是您从字符串变量中编写了 stream。 使用 UTF-16 编码的 Unicode 字符串每个字符有两个字节,而旧版本的 Delphi 使用 ANSI 编码,每个字符一个字节。

使用 UTF-16 编码的英文文本具有您观察到的每隔一个字节为零的模式。

为了解决这个问题,您需要研究写入 stream 的代码部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM