Преобразование потока Unicode в список строк в D2007 - PullRequest
2 голосов
/ 16 декабря 2010

В приложении D2010 я делаю

StringList.SaveToStream (MemStream, TEncoding.Unicode);

Затем я отправляю этот поток по сети некоторым клиентским приложениям.Эта часть кода исправлена ​​(я не могу ее изменить):

Теперь у меня есть приложение D2007, которому нужно получить этот поток и преобразовать его обратно в список строк.D2007 не включает поддержку Unicode и класс TEncoding.Как я могу преобразовать поток в список строк?Нечто похожее на

StringList.LoadFromStream (MemStream, TEncoding.Unicode)

в D2010 ...

Спасибо за любую помощь.

Ответы [ 2 ]

4 голосов
/ 16 декабря 2010

В Delphi 2007 у вас есть несколько параметров:

  1. Использовать TWideStrings.
  2. Считать содержимое потока в переменную WideString и присвоить его значение свойству TStrings.Text.
2 голосов
/ 16 декабря 2010

Edit: поскольку вы не можете изменить свой код Delphi 2010, я бы использовал класс TWideStrings из модуля WideStrings в Delphi 2007: этот класс поддерживает строки Unicode.

Обратите внимание, что при кодировании вВ Delphi 2010 вы найдете спецификацию ( знак порядка байтов ) в начале потока.

Я бы сохранил поток в Delphi 2010 как UTF8 ( TEncoding.UTF8 ), затем в Delphi 2007 используйте function UTF8Decode(const S: UTF8String): WideString; ( документы ) из System.

- jeroen

...