Moin gwxxl,
ich glaube, ich habe die Ursache für das Problem:
Deine Konstante für die Datendatei enthält nicht den Pfad, sondern nur den Dateinamen.
Dies hat zur Folge, dass bei Zugriffen auf die Datei als Verzeichnis das Arbeitsverzeichnis des Programmes verwendet wird.
Standardmässig ist dies das Programmverzeichnis.
Dadurch, dass Du den OpenDialog verwendest, ändert sich das Arbeitsverzeichnis auf das zuletzt dort ausgewählte, so dass beim nächsten Speichern die Datei in dem Verzeichnis abgelegt wird.
Abhilfe kannst Du auf zwei Wegen schaffen:
- In den Optionen des OpenDialog wird ofNoChangeDir auf true gesetzt
- Du setzt vor den Dateinamen (die Konstante) noch den Pfad des Programmes (ExtractFilePath(paramstr(0))+datafilename)). Um diese Auswertung nur einmal machen zu müssen speicherst Du den gesamten Pfad in einer Variablen, die Du, z.B. im initialization Abschnitt initialisierst
Ich würde die 2. Methode verwenden, da ich es selber nicht sonderlich schätze, wenn ich mit der Navigation im Dateisystem dauernd von Vorne anfangen muss.