dzi*_*bul 0 delphi byte types tstream delphi-xe
在以前的Delphi版本中,代码如下:
var InBuf: array[1..45] of Byte;
Count := InStream.Read(InBuf, SizeOf(InBuf));
Run Code Online (Sandbox Code Playgroud)
用正确的值填充变量InBuf(每个字节都有一个值).现在在Delphi XE中,数组的每个第二个字节都是0,我想是因为Byte数据类型是Delphi XE中的Unicode性质的两倍大.但是,我的流已经生成并且需要通过这个过程,所以我需要另一种类型(可能?),如果有人遇到这个问题,那是Byte的一半大小或另一种解决方案.谢谢
这里发生了什么,概率大于99%的是你从字符串变量写入了流.使用UTF-16编码的Unicode字符串每个字符有两个字节,而旧版本的Delphi使用ANSI编码,每个字符一个字节.
英文文本,当使用UTF-16编码时,您会观察到每隔一个字节为零的模式.
为了解决这个问题,您需要调查写入流的代码部分.
| 归档时间: |
|
| 查看次数: |
582 次 |
| 最近记录: |