Entwickler-Ecke

Dateizugriff - Textausgabe in Editordatei


butterbrot - So 17.06.07 15:34
Titel: Textausgabe in Editordatei
Hallo,
ich habe ein simples Programm erstellt, das den Inhalt eines Editfeldes in einer Editordatei ausgibt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
if
  FileExists (Name + '.txt')
then
  AssignFile (Datei, Name + '.txt')
else
  FileCreate (Name + '.txt');

Rewrite (Datei);
WriteLn (Datei, Content);
CloseFile (Datei);


Unsere Aufgabe (Informatikunterricht) ist es jedoch, beim späteren Öffnen oder häufigem Klicken des Buttons immer einen neuen Eintrag hinzuzufügen ohne den bisherigen Inhalt zu überschreiben. Dies ist mit der Verwendung von Rewrite nicht möglich. Was ich also suche ist ein Befehl, der die Datei öffnet, ans Dateiende springt, einen Zeilenumbruch macht und den neuen Eintrag hinzufügt (zumindest sollte es wohl in die Richtung gehen).

Außerdem verstehe ich nicht, warum ich diese Fehlermeldung erhalte,
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt p_20070617_Editorausgabe.exe ist eine Exception der Klasse EComponentError aufgetreten. Meldung: '''Dateiname.txt'' ist kein gültiger Komponentenname'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------

wenn ich Name als Name + '.txt' direkt nach dem Auslesen deklariere.

Ich hoffe ich konnte mein Problem verständlich schildern.


Wonko - Mo 18.06.07 08:47

:welcome:

Zum Anhängen an bestehende Dateien gibt es Append, damit wird Dir die Delphi-Hilfe weiterhelfen.

Zitat:
wenn ich Name als Name + '.txt' direkt nach dem Auslesen deklariere.

Was meinst Du mit "Auslesen" ?? Wie erstelltst Du den Dateinamen??


butterbrot - Di 19.06.07 21:30

Append funktioniert schon mal super, danke.

Zum Problem des Dateinamens:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
if
  FileExists (Name + '.txt')
then
  AssignFile (Datei, Name + '.txt')
else
  FileCreate (Name + '.txt');

Momentan wird der Name aus einem Editfeld ausgelesen. Wie oben im Code zu sehen arbeite ich dann mit Name + '.txt'. Um das ganze aber felxibler zu machen würde ich es vorziehen die Dateiendung auch einer Variabel zuzuweisen.
Spontan würde ich das so machen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Name := edt_name.Text;
Format := '.txt';

Name := Name + Format;

if
  FileExists (Name)
then
  AssignFile (Datei, Name)
else
  FileCreate (Name);

Hierbei erhalte ich leider die oben erwähnte Fehlermeldung :(


Blackheart666 - Di 19.06.07 21:51

Benutze mal für Name einen anderen Variablenbezeichnung.


butterbrot - Di 19.06.07 21:55

grml.. danke, funktioniert :)