Delphi в мире Юникода


         

Write/WriteBuffer


Как и в случае 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"е.



Содержание раздела