Wenn das Problem reproduzierbar ist, dann ist es ja fast schon kein Problem mehr.
Beim 2ten abspeichern hälst du das Programm an (Breakpoint setzen) und gehst Schritt für Schritt durch was er macht.
Dabei sollte es Dir auffallen, was da falsch läuft. (Variablen beobachten).
Wenn das nicht hilft, dann ein eigenes Projekt machen, in das Du nur diesen Code reinschreibst und ihn dann 2 mal ausführen lässt.
Vielleicht fällt Dir dann etwas auf.
Ansonsten zur Benutzung von Pfaden mache ich meißt folgendes, bei Desktopprogrammen, die ihre Daten im Programm-Pfad halten.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.FormActivate(Sender: TObject); begin ProgPath := ExtractFilePath(paramstr(0)); ImportPath := ProgPath + 'Import\'; ExportPath := ProgPath + 'Export\';
if fileexists(ProgPath + 'Kategorie.ini') then Form1.CBKategorie.Items.LoadFromFile(ProgPath + 'Kategorie.ini');
if not DirectoryExists(ImportPath) then Mkdir(ImportPath);
if not DirectoryExists(ExportPath) then Mkdir(ExportPath);
DBInit; end; |
Beim Start den Programmpfad in eine Globale Variable speichern und sich dann immer auf diesen beziehen.
Das Programm darf dann bei Vista natürlich nicht in den Programme-Ordner installiert werden.
Wenn die Daten woanders liegen sollen, dann den Pfad über einen Fileopen dialog hölen lassen und auch auf existenz prüfen.
Dann immer mit diesem Pfad arbeiten und nicht mit einem Pfad, der in einer editbox steht.