Entwickler-Ecke

Dateizugriff - endung auslesen


hibbert - Mi 27.11.02 11:28
Titel: endung auslesen
hallo,
ich möchte gerne die endung einer datei (z.b. txt) auslesen.
denn ich speicher den inhalt einer listbox über den svedialog ab. mein problem ist, dass ich zwar im filter *.txt angeben kann, aber wenn ich gerne eine datei überschreiben möchte, schreibt er eine neue datei ! :shock: :?
(z.b ich erstelle die datei test.txt, und habe daten in meinem programm geändert, jetzt möchte ich diese wieder in der test.txt abspeichern, aber eine neute datei wird erstellt --> test.txt.txt . vielleicht lieg es ja auch daran:

Quelltext
1:
listbox1.Items.SaveToFile(savedialog1.FileName+'.txt');                    

gibt's da vielleicht auch noch einen anderen weg ?)

also, meine fragen: wie kann ich die endung auslesen?
und wie kann ich über den savedialog dateinen überschreiben?

mfg hibbert


Delete - Mi 27.11.02 11:40

Klar liegt es daran. :roll: Überleg doch mal, was du machst bzw. das Programm.. Du wählst im Speicher-Unter-Dialog "Test.txt" aus und was machst du mit dieser Zeile:

Quelltext
1:
listbox1.Items.SaveToFile(savedialog1.FileName+'.txt');                    

Du hängst noch mal ".txt" hinten dran. :?

Einfach mal überlegen, was man eigentlich macht bzw. was da eigentlich passiert. :wink:


Klabautermann - Mi 27.11.02 11:51
Titel: Re: endung auslesen
Hallo,
hibbert hat folgendes geschrieben:

Quelltext
1:
listbox1.Items.SaveToFile(savedialog1.FileName+'.txt');                    

gibt's da vielleicht auch noch einen anderen weg ?)

also, meine fragen: wie kann ich die endung auslesen?
und wie kann ich über den savedialog dateinen überschreiben?

Der Savedilog Speichert garnicht. Er hilft nur beim ermitteln des Dateinamens. Da du immer die Endung TXT anhängst, ist es klar das du dinge Text.txt.txt rauskriegst. Du solltest über ExtractFileExt überprüfen, ob der ausgewählte Dateiname eine Dateiendung besitzt.

Das könnte so aussehen:

Quelltext
1:
2:
3:
4:
if (ExtractFileExt(savedialog1.FileName) = '') then
  listbox1.Items.SaveToFile(savedialog1.FileName+'.txt')
else
  listbox1.Items.SaveToFile(savedialog1.FileName);


Gruß
Klabautermann


Anonymous - Mi 27.11.02 13:20

Versuch das mal:


Quelltext
1:
listbox1.Items.SaveToFile(ChangeFileExt(savedialog1.FileName, '.txt'));                    


Egal ob schon was da ist oder noch nichts da ist, die Datei wird immer mit einem ".txt" enden.


hibbert - Mi 27.11.02 15:51

vielen dank !! genau das was ich gesucht habe !!
doch noch eine kleine frage zum schluss:
wie kann ich überprüfen, ob die datei abgespeichert wurde, d.h. ich möchte wissen, ob der user im savedialog auf speichern oder abbrechen geklickt hat. wie geht das ???
mfg hibbert


Delete - Mi 27.11.02 15:56


Quelltext
1:
SaveDialog1.Execute                    

Liefert TRUE, wenn der Benutzer auf OK geklickt hat und FALSE, wenn er auf Abbrechen geklickt hat.


Quelltext
1:
2:
3:
4:
5:
if SaveDialog1.Execute then
begin
  Anweisung1;
  Anweisung2;
end;