![]() |
SaveDialog Filename kleinste freie Nummer
ich bin dabei ein Programm zu schreiben, das Labyrinthe erstellt.
Diese sollen später gespeichert und wieder geladen werden können. Beim Speichern habe ich nun folgendes Problem: Die Labyrinthe sollen mit einem SaveDialog in eine txt-Datei gespeichert werden. Ich möchte jetzt, dass ein Dateiname vorgeschlagen wird, der von den anderen Dateinamen (in dem Ordner) abhängt! Bsp: Wenn es in dem Ordner schon die Dateien "Labyrinth_1.txt","Labyrinth_2.txt" und "Labyrinth_3.txt" gibt, soll er den Dateinamen "Labyrinth_4" vorschlagen. (Also "Labyrinth_" und dann die kleinste freie Nummer.) Mein script für diesen Vorgang sieht so aus:
Delphi-Quellcode:
Wenn man das erste mal auf speichern klickt, passiert genau das richtige, aber beim zweiten (und dritten,...) mal schlägt er IMMER den Namen "Labyrinth_1" vor !!
fertig := false;
i := 1; while not fertig do begin if FileExists('save_files\Labyrinth_'+IntToStr(i)+'.txt') then begin inc(i); end else begin SaveDialog1.FileName := 'Labyrinth_'+IntToStr(i)+'.txt'; SaveDialog1.Execute; Memo1.Lines.SaveToFile(SaveDialog1.FileName); fertig := true; end; end; Was mache ich falsch ? MFG mathis [edit=Sharky]Delphi-Tags eingefügt. Mfg, Sharky[/edit] |
Re: SaveDialog Filename kleinste freie Nummer
Naja .. du frägst ja auch nur einmal, ob es die datei giebt ...
Du könntest statt mit "if FileExists()" mit "while FileExists()" arbeiten. evtl. auch noch das end else wech machn ... EDIT: :oops: ok .. vergiss einfach, daß ich gepostet habe :pale: |
Re: SaveDialog Filename kleinste freie Nummer
an sich ist dein code richtig! jedenfalls finde ich nichts
könnte es am rest liegen? mir fällt grad auf hast du abgebrochn oder gespeichert ?
Delphi-Quellcode:
wäre eleganter
if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName);
|
Re: SaveDialog Filename kleinste freie Nummer
Setzte von deinem SaveDialog die Option NoChangeDir auf true. Ich vermute, dass das Arbeitsverzeichnis nach save_files durch den SaveDialog geändert wird. Das true verhindert den Wechsel und dann sollte es auch beim Zweiten mal klappen.
|
Re: SaveDialog Filename kleinste freie Nummer
Hallo,
ich würde bei der Überprüfung mittels FileExists keinen relativen Pfad benutzen. Wer weiß schon, in welchem Pfad Windows dann sucht? Gruß Hawkeye |
Re: SaveDialog Filename kleinste freie Nummer
Hinsichtlich der ersten beiden Atworten sieht mein script jetzt erstmal so aus:
Delphi-Quellcode:
> wie meinst du mit dem NoChangeDir?, bin noch sehr neu in Delphii := 1; while FileExists('save_files\Labyrinth_'+IntToStr(i)+'.txt') do inc(i); SaveDialog1.FileName := 'Labyrinth_'+IntToStr(i)+'.txt'; if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName); ...also wenn ich einfach SaveDialog1.NoChangeDir := true; schreibe, bekomm ich einen Fehler: Undefinierter Bezeichner: 'NoChangeDir' (kann das daran liegen, das es den Befehl bei Delphi 3 noch nicht gibt?) > und mit dem relativen Pfad,... Ich finde das so viel praktischer, weil das dann nicht davon abhängt, wo sich die Datei befindet. [edit=Sharky]Noch einmal Delphi-Tags eingefügt. Bitte mache das bei deinen nächsten Postings selber. Danke. Mfg, Sharky[/edit] |
Re: SaveDialog Filename kleinste freie Nummer
Zitat:
Gruß Hawkeye |
Re: SaveDialog Filename kleinste freie Nummer
es geeeht !!
... Nein, das mit dem Pfad war mir nicht bewusst, jetzt hab ich es auf den exakten Pfad geändert und es geht !! Vielen Dank an euch alle mathis |
Re: SaveDialog Filename kleinste freie Nummer
Zitat:
Und schon hast du den Pfad in dem seich deine EXE befindet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz