Ich würde einfach tippen, dass das Programm durch das DirectoryExists-Gewusel nicht durchblickt und deshalb den FileStream nicht erzeugt, in den später was geschrieben wird.
Probier mal, den Code mit ForceDirectories aufzuräumen.
Außerdem: es muss heißen
Filestream := TFileStream.Create( .... );
Stürzt das Programm ab, oder bricht die Compilierung ab? Denn die Fehlermeldung am Anfang ist doch eine Compiler-Fehlermeldung, oder nicht? Edit: Anhang nicht gesehen.
The angels have the phone box.