Сергей Смирнов писал(а):TStream.Write
 если верить документации, вообще не поддерживается и возвращает эксепшн, ибо этим должен заниматься потомок.
Забыл упомянуть: 
TempStream:TMemoryStream;
Буфер пишет .WriteBuffer, вызывающая для своей работы ту самую .Write.
Если верить исходникам, то
- Код: Выделить всё
- Procedure TStrings.SaveToStream(Stream: TStream);
 Var
 S : String;
 begin
 S:=Text;
 Stream.WriteBuffer(Pointer(S)^,Length(S));
 end;
 
 Самому что ли так попробовать?
Добавлено спустя 4 минуты 47 секунд:Ага, так сработало... Но как-то грустно, раз уж string и так передается по ссылке.