Проблема чтения 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, имеет шаблон, который вы наблюдаете, что каждый второй байт равен нулю.
Чтобы решить эту проблему, вам нужно изучить раздел кода, который пишет в поток.