Проблема чтения TStream в Delphi XE

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

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам