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.
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.