在Delphi XE中读取TStream的问题

时间:2011-07-21 07:38:02

标签: delphi types byte delphi-xe tstream

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

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

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

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

1 个答案:

答案 0 :(得分:7)

这里发生了什么,概率是> 99%,你是从字符串变量写的。使用UTF-16编码的Unicode字符串每个字符有两个字节,而旧版本的Delphi使用ANSI编码,每个字符一个字节。

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

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