vor

Objektorientierte Programmierung mit Object-Pascal

weiter

4.13 Arbeiten mit Dateien und Datenbanken

Der Umgang mit Dateien ist eines der wichtigsten Themen beim Programmieren. Wenn das Projekt umfangreicher wird und die Anforderungen professioneller, dann kommt man nicht um die Arbeit mit Dateien herum.

Dazu ist zu klären, wie man Daten in eine Datei schreibt und wie man wieder an die Daten dieser Datei heran kommt, also wie man Dateien anlegt, speichert, schließt und öffnet. Dazu stellt Delphi eine Reihe von Routinen zur Verfügung.

Für Dateien gibt es in Delphi zwei Typen von Variablen, "TextFile" für Textdateien und "File" für alle anderen.

Textdateien sind Dateien, die ausschließlich aus ASCII- bzw. UNICODE-Zeichen bestehen. Diese Zeichen werden durch die Zeichenkombinationen CR/LF (#13#10) in einzelne Zeilen organisiert.

Die Verknüpfung der Datei mit ihrer Variablen geschieht mit dem Befehl "AssignFile". Damit ist sie aber noch nicht geöffnet.

Zum Öffnen einer Datei gibt es bei Delphi drei Befehle:

  • "Reset" - Eine bestehende Datei wird geöffnet. Man kann aus ihr Daten lesen und in sie Daten hinein schreiben.
  • "ReWrite" - Die Date wird neu angelegt. Sollte in dem Ordner schon eine Datei gleichen Namens existieren, so wird diese vor dem Anlegen gelöscht.
  • "Append" - An eine existierende Textdatei können mit diesem Befehl Daten an das Ende angehängt werden.
Nach dem Arbeiten mit der Datei muss man sie mit "CloseFile" schließen.

Zum Arbeiten mit einer Datei gibt es bei Delphi vier Befehle:
  • "Read" - Mit diesem Befehl kann aus einer Datei gelesen werden.
  • "Write" - Mit diesem Befehl kann in eine Datei geschrieben werden.
  • "ReadLN" - Mit diesem Befehl kann aus einer Textdatei eine Zeile gelesen werden.
  • "WriteLN" - Mit diesem Befehl kann in eine Textdatei eine Zeile geschrieben werden.
Die folgende Prozedur legt eine neue Textdatei mit drei Zeilen an. Sollte im aktuellen Ordner schon eine Datei mit dem Namen "neu.txt" existieren, so wird diese überschrieben.


var Datei: TextFile;

procedure TForm1.Button1Click(Sender: TObject);
begin
        AssignFile(Datei,'neu.txt');
        Rewrite(Datei);
        if IOResult = 0 then
        begin
        writeln(Datei,'Hallo!');
        writeln(Datei,'Die Datei ist jetzt neu.');
        writeln(Datei,'Sie kann nun verändert werden.');
        CloseFile(Datei);
        end;
end;


Bei Textdateien kann man ganz einfach den Inhalt auslesen:


procedure TForm1.Button2Click(Sender: TObject);
begin
        Memo1.Clear;
        Memo1.Lines.LoadFromFile('neu.txt');
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
        ListBox1.Clear;
        ListBox1.Items.LoadFromFile('neu.txt');

end;


Genau so einfach kann man den Inhalt z. B. eines Memofeldes als Datei abspeichern:


procedure TForm1.Button3Click(Sender: TObject);
begin
         Memo1.Lines.SaveToFile('neu.txt');

end;

end.


Zum Verwalten von Dateien gibt es bei Delphi noch einige weitere Befehle:
  • "DeleteFile" - Löschen einer Datei
  • "RenameFile" - Umbenennen einer Datei
  • "FileGetAttr" - Attribute einer Datei ermitteln
  • "DiskFree" - Ermittelt die Anzahl der freien Bytes auf einem Datenträger
  • "DiskSize" - Ermittelt die Gesamtkapazität eines datenträgers in Byte
  • "GetDir" - Ermittelt das momentan aktuelle Verzeichnis auf einem Laufwerk
  • "MkDir" - Erzeugt ein Unterverzeichnis
  • "RmDir" - Entfernt ein Unterverzeichnis
  • "Truncate" - Schneidet eine Datei an der aktuellen Dateiposition ab

Wenn der Anwender eine Datei zum Öffnen auswählen können soll oder wenn er eine Datei unter einem selbstgewählten Namen in einen bestimmten Ordner speichern können soll, so bietet es sich an, die Komponeten "OpenDialog" bzw. "SaveDialog" zu benutzen. Dabei können auch u. a. Filter, Standardordner und Dateierweiterungen eingesetzt werden.

Beispiel für OpenDialog:

if OpenDialog1.Execute then
begin
ListBox1.Clear;
DateiName := (OpenDialog1.Filename);
ListBox1.Items.LoadFromFile(DateiName);
end;


Beispiel für SaveDialog:

if SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.Filename);


vor

Inhaltsverzeichnis

weiter