Ich vermute mal das du auf den häufigsten "Anfänger"-fehler reingefallen bist.
Nachdem du den Inhalt des TMemoryStream gepackt hast befinden sich dessen Positions-Zeiger = Datei-Zeiger am Ende des Streams. Also MemoryStream.Position == MemoryStream.Size. Bevor du nun diesen Stream an
Indy übergibts MUSST du mit MemoryStream.Position := 0; diesen Zeiger auf den Anfang im Stream zurücksetzen. Alle Streamorientierten
API's sollten immer ausgehend von der aktuellen Position im Stream bis maximal zum Ende des Streames die Daten weiterverarbeiten. D.h. bei der Benutzung von Streams ist der Programmierer selber für die richtige Positionierung des Dateizeigers verantwortlich !
Gruß Hagen