Das Problem ist sehr einfach: Du benutzt relative Pfade. Damit benutzt du das aktuelle Arbeitsverzeichnis, das wird zum Beispiel geändert, wenn du einen Dialog benutzt.
Und deshalb landet die Datei dann dort wo zuletzt der OpenDialog war z.B., genau deshalb muss man grundsätzlich absolute Pfade verwenden. Das eigene Verzeichnis der Exe ist zwar für das Speichern von Einstellungen schlecht geeignet, aber wenn du dort speichern willst, dann
musst du das so machen:
AssignFile(MyFile, ExtractFilePath(ParamStr(0)) + 'pfad.txt');
Mehr zu dem Thema findest du hier:
http://www.delphi-library.de/viewtopic.php?p=499701