簡體   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