Makros und Programme einsetzen

Zugriff auf Dateien

Top  Previous  Next

TurboPL enthält Funktionen, mit denen Sie beliebige Dateien lesen und schreiben können. Dateien werden über Zahlen identifiziert, die beim Öffnen der Datei mit Reset (Öffnen zum Lesen) oder Rewrite (Öffnen zum Schreiben) zurückgegeben werden.

Dies ist ein Beispiel, wie eine neue Datei angelegt und beschrieben wird:

vardef DateiHandle: Integer;
DateiHandle := Rewrite('c:\temp\NeueDatei.txt');
Write(DateiHandle, 'Neue Datei');
Close(DateiHandle);

Das Argument von Write ist zwar immer ein String, aber weil Strings in TurboPL beliebige Codes enthalten dürfen, bedeutet das nicht, dass man nur Text-Dateien erzeugen und lesen kann. Das folgende Beispiel öffnet eine Datei und prüft, ob es eine Bitmap-Datei ist. Diese ist an den Werten B und M in den ersten beiden Bytes zu erkennen. Anschließend liest es die Größe des Bildes (in Bytes) aus der Datei und liefert diese Zahl als Ergebnis zurück:

procedure ReadBitmapSize(FileName: String): Integer;
       vardef Result: Integer;
       vardef FileHandle: Integer;
       vardef D: String;
       FileHandle := Reset(FileName);
       D := Read(FileHandle, 2);
       if D[1] = 'B' and D[2] = 'M'
               D := Read(FileHandle, 4);
               Result := (((Asc(D[4]) * 256) + Asc(D[3])) * 256 + Asc(D[2])) * 256 + Asc(D[1]);
       else
               Result := 0;
       end;
       Close(FileHandle);
       return Result;
endproc;

Der Aufruf von Close ist wichtig, damit die Datei wieder freigegeben wird, ihre Angaben im Windows Explorer aktualisiert werden und andere Anwendungen wieder darauf zugreifen können. Zwar kümmert sich auch TurboPL selbst darum, dass alle geöffneten Dateien auch wieder geschlossen werden. Wenn Sie aber in Ihrem Programm vergessen, Close aufzurufen, ist der Zeitpunkt für das Schließen unbekannt.

Wenn Sie als Dateiname die Bezeichnung RamText verwenden, wird eine "Datei" geöffnet, die nicht auf der Festplatte sondern nur im Hauptspeicher existiert und dadurch sehr schnell ist. Über eine Speicherdatei kann man zum Beispiel viel Text zusammenfassen und dann mit Text2Clip in die Zwischenablage schreiben. Umgekehrt können Sie den Text mit Clip2Text aus der Zwischenablage in die Speicherdatei holen und von dort stückweise auslesen. Der Haupteinsatzzweck von Speicherdateien - die Behandlung von Zeichenketten mit mehr als 255 Zeichen - ist jedoch mit der Einführung von beliebig langen Strings weggefallen.l

Siehe auch

Dateien und Ordner in der TurboPL Referenz