0

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

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

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

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

4

1 回答 1

7

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

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

为了解决这个问题,您需要调查写入流的代码部分。

于 2011-07-21T07:56:30.463 回答