Entwickler-Ecke

Dateizugriff - Probleme mit "writeln" und einer vorhandenen Datei


ak - So 29.06.03 13:57
Titel: Probleme mit "writeln" und einer vorhandenen Datei
Hallo Leute,

ich möchte eine Datei öffnen und etwas ans Ende reinschreiben. Das funktioniert mit folgendem Quelltext sehr gut:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
if opendialog1.Execute=True then
  dateiname := opendialog1.FileName;

  assignfile(d,dateiname);
  rewrite(d);
  WriteLn(d,'hallo');
  closefile(d);

aber ohne die Befehlszeile "rewrite(d);", die ja eine neue Datei erstellt und eine alte evtl. schon vorhandene Datei löscht, bekomme ich immer eine Fehlermeldung. Weiss jemand warum? Ich möchte auch an eine schon vorhandene Datei etwas anhängen.

Gruß AK

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.


Keldorn - So 29.06.03 14:04

lies dir mal durch, was in der OH zu rewrite und append steht

mfg Frank


ak - So 29.06.03 14:07

was bedeutet OH ?


Tweafis - So 29.06.03 14:20

OH, die - Online Hilfe, die, über F1 zu erreichen ;)


ak - So 29.06.03 15:49

hehe...bin leider etwas im Stress

ich habs jetzt so gemacht...

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
if opendialog1.Execute=True then
  dateiname := opendialog1.FileName;

  assignfile(d,dateiname);
  append(d);
  WriteLn(d,'hallo');
  Flush(d);
  closefile(d);
end;


Gruß AK

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


Delete - So 29.06.03 16:29

Öhm, was passiert, wenn der Benutzer beim dateiöffnendialog auf Abbrechen Klickt? dann dürfte dein programm abstürzen, da dann die Variable "dateiname" einen ubestimmten Wert hat.


MAlsleben - Mo 30.06.03 08:25

Hi,

Luckie, das Programm dürfte eigentlich nicht abstürzen, da die Bedingung in der If -Schleife nicht erfüllt wird. Auszug aus Delphi -Hilfe:
Delphi-Hilfe hat folgendes geschrieben:
Die Methode Execute zeigt das Dialogfeld zur Dateiauswahl an.


Delphi-Quelltext
1:
function Execute: Boolean; override;                    


Beschreibung

Execute öffnet das Dialogfeld zur Auswahl von Dateien und gibt True zurück, wenn der Benutzer eine Datei ausgewählt und auf OK geklickt hat. Klickt der Benutzer auf Abbrechen, liefert Execute False zurück.

Gruß Micha

Moderiert von user profile iconTino: Quote-Tags hinzugefügt.


Keldorn - Mo 30.06.03 08:48

@MAlsleben

ja und? ak hat aber ein begin und end vergessen. Sowie der Code jetzt dasteht, werden die Daten immer geschrieben, egal, was der User im Opendialog geklickt hat.

2. möglicher Fehler (je nachdem was das Prog machen soll, bzw. wie der opendialog eingestellt ist)
was passiert, wenn der user eine Datei auswählt, die noch gar nicht existiert?

onlinehilfe zu Append hat folgendes geschrieben:

Ist die Datei mit dem angegebenen Namen nicht vorhanden, tritt ein Fehler auf.


Mfg Frank


MAlsleben - Mo 30.06.03 09:38

Keldorn,

da hast Du natürlich recht, ich habe nur am Schluß das "end"gesehen und hab' übersehen , das der ganze Block in Begin und end muß. Eben nicht genau hingeschaut.

Das die Options entsprechend eingestellt werden, ist selbstverstänlich.

Gruß Micha.