Как и в случае Read/ReadBuffer, использование TStream.Write/WriteBuffer следует проверить, если используются строки или символьные массивы. Рассмотрим следующий код: var S: string; Stream: TStream; Temp: AnsiString; begin // Существующий код - неправильный, потому что string = UnicodeString Stream.Write(Pointer(S)^, Length(S)); // Правильный код для Юникод-данных Stream.Write(Pointer(S)^, Length(S) * SizeOf(Char)); // <<-- Задание размера буфера в байтах // Правильный код для ANSI-данных Temp := S; // <<-- Используем временную AnsiString Stream.Write(Pointer(Temp)^, Length(Temp) * SizeOf(AnsiChar));// <<-- Задание размера буфера в байтах end;
Примечание: работа зависит от формата читаемых данных. Смотрите описание нового класса TEncoding, приведенное выше, для получения сведений о правильном кодировании текста в Stream"е.