Проблема чтения TStream в Delphi XE - PullRequest
0 голосов
/ 21 июля 2011

В предыдущих версиях Delphi использовался следующий код:

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

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

заполнил переменную InBuf правильными значениями (каждый байт имел значение). Теперь в Delphi XE каждый второй байт массива равен 0, я полагаю, потому что тип данных Byte в два раза больше из-за его природы Unicode в Delphi XE. Но мои потоки уже сгенерированы и должны пройти через эту процедуру, поэтому мне нужен другой тип (возможно?), Который имеет половину размера байта или другое решение, если кто-то сталкивался с этой проблемой. Спасибо

1 Ответ

7 голосов
/ 21 июля 2011

То, что здесь произошло, с вероятностью> 99% состоит в том, что вы записали поток из строковой переменной.Строки Unicode с кодировкой UTF-16 имеют два байта на символ, тогда как в более старых версиях Delphi используются кодировки ANSI с одним байтом на символ.

Текст на английском языке, когда кодируется с помощью UTF-16, имеет шаблон, который вы наблюдаете для каждого второго байтаноль.

Чтобы решить эту проблему, вам нужно исследовать часть кода, которая записывает в поток.

...