AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi SaveDialog Filename kleinste freie Nummer
Thema durchsuchen
Ansicht
Themen-Optionen

SaveDialog Filename kleinste freie Nummer

Ein Thema von draxion · begonnen am 18. Mai 2006 · letzter Beitrag vom 19. Mai 2006
Antwort Antwort
draxion

Registriert seit: 13. Mai 2006
5 Beiträge
 
#1

SaveDialog Filename kleinste freie Nummer

  Alt 18. Mai 2006, 15:31
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:
  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;
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 !!
Was mache ich falsch ?

MFG mathis

[edit=Sharky]Delphi-Tags eingefügt. Mfg, Sharky[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#2

Re: SaveDialog Filename kleinste freie Nummer

  Alt 18. Mai 2006, 15:35
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: ok .. vergiss einfach, daß ich gepostet habe
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#3

Re: SaveDialog Filename kleinste freie Nummer

  Alt 18. Mai 2006, 15:39
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 ?

if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName); wäre eleganter
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#4

Re: SaveDialog Filename kleinste freie Nummer

  Alt 18. Mai 2006, 15:43
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.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: SaveDialog Filename kleinste freie Nummer

  Alt 18. Mai 2006, 15:45
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
  Mit Zitat antworten Zitat
draxion

Registriert seit: 13. Mai 2006
5 Beiträge
 
#6

Re: SaveDialog Filename kleinste freie Nummer

  Alt 18. Mai 2006, 15:57
Hinsichtlich der ersten beiden Atworten sieht mein script jetzt erstmal so aus:
Delphi-Quellcode:
  
  i := 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);
> wie meinst du mit dem NoChangeDir?, bin noch sehr neu in Delphi
...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]
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: SaveDialog Filename kleinste freie Nummer

  Alt 18. Mai 2006, 17:57
Zitat von draxion:
> und mit dem relativen Pfad,...
Ich finde das so viel praktischer, weil das dann nicht davon abhängt, wo sich die Datei befindet.
Dir ist aber schon bewußt, daß sich eine relative Pfadangabe immer auf den aktuellen Pfad bezieht und nicht auf den Programmpfad? Der aktuelle Pfad ändert sich bereits, wenn man über einen OpenDialog eine Datei aus einem anderen Verzeichnis lädt.

Gruß Hawkeye
  Mit Zitat antworten Zitat
draxion

Registriert seit: 13. Mai 2006
5 Beiträge
 
#8

Re: SaveDialog Filename kleinste freie Nummer

  Alt 18. Mai 2006, 18:09
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
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#9

Re: SaveDialog Filename kleinste freie Nummer

  Alt 19. Mai 2006, 09:00
Zitat von Hawkeye219:
Dir ist aber schon bewußt, daß sich eine relative Pfadangabe immer auf den aktuellen Pfad bezieht und nicht auf den Programmpfad? Der aktuelle Pfad ändert sich bereits, wenn man über einen OpenDialog eine Datei aus einem anderen Verzeichnis lädt.
Abhilfe: ExtractFilePath(ParamStr(0));
Und schon hast du den Pfad in dem seich deine EXE befindet.
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz