Hallo Malte,
dein Code in Beitrag #2 muss mindestens noch um eine Zeile erweitert werden, da nach dem Schreiben in einen Stream der Positionszeiger an der erreichten Endstelle stehen bleibt. Beim Auslesen deines Streams werden so 0 Bytes gelesen, weil Offset = Size ist.
Delphi-Quellcode:
// ...
Memo1.Lines.SaveToStream(Stream);
Stream.Position := 0;
// ...
Freundliche Grüße