Dein try/finally ist gefährlich gebaut und kann zu undefiniertem Verhalten führen!
Hintergrund: datei ist eine lokale Variable und enthält somit zufällige Werte. Die Wahrscheinlichkeit, dass der in der Struktur enthaltene FileHandle Member ungleich INVALID_HANDLE_VALUE ist, ist sehr hoch. Dadurch wird mit dem CloseFile() im Fehlerfall (vor dem Öffnen) bzw. wenn SaveDialog abgebrochen wird ein ganz anderes File
Handle geschlossen.
Das try vom try/finally muss immer nach dem AssignFile() erscheinen, da AssignFile() die Struktur komplett initialisiert.