Difference between revisions of "TFileStream/de"

From Free Pascal wiki
Jump to navigationJump to search
(Created page with "{{TFileStream}} <br> Zurück zu den Dateitypen.<br> <br> __TOC__ <br> =Filestream= Bei einem Filestream wird die Quelldatei immer byteweise gelesen bzw. gesc...")
 
m
Line 7: Line 7:
 
=Filestream=
 
=Filestream=
 
Bei einem Filestream wird die Quelldatei immer byteweise gelesen bzw. geschrieben.<br>
 
Bei einem Filestream wird die Quelldatei immer byteweise gelesen bzw. geschrieben.<br>
Bei einem Filestream wird eine Datei vollständig in den Arbeitsspeicher gelesen. Daher eignet sich der Filestream für Dateien kleiner und mittlerer Grösse. Filestream ist eine Möglichkeit Dateien einfach und schnell zu verarbeiten. Der Filestream bietet sich für die Verarbeitung von Dateien an, die wenige KiloByte oder MegaByte gross sind.<br>
+
Bei einem Filestream wird eine Datei vollständig in den Arbeitsspeicher gelesen. Daher eignet sich der Filestream für Dateien kleiner und mittlerer Grösse. Filestream ist eine Möglichkeit, Dateien einfach und schnell zu verarbeiten. Der Filestream bietet sich für die Verarbeitung von Dateien an, die wenige Kilobyte oder Megabyte gross sind.<br>
 
<br>
 
<br>
  
Line 57: Line 57:
 
begin
 
begin
  
   // öffnet eine Datei zum lesen und sperrt sie gleichzeitig gegen Schreibzugriffe
+
   // öffnet eine Datei zum Lesen und sperrt sie gleichzeitig gegen Schreibzugriffe
 
   datQuelldatei := TFileStream.Create(strDateiname, fmOpenRead or fmShareDenyWrite);
 
   datQuelldatei := TFileStream.Create(strDateiname, fmOpenRead or fmShareDenyWrite);
  
Line 124: Line 124:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
<br>
 
<br>
Beispiel für einen Unterprogrammaufruf um eine Datei zuschreiben:
+
Beispiel für einen Unterprogrammaufruf um eine Datei zu schreiben:
 
<syntaxhighlight>
 
<syntaxhighlight>
  

Revision as of 01:10, 26 January 2014

Deutsch (de) English (en) français (fr) polski (pl)

Zurück zu den Dateitypen.


Filestream

Bei einem Filestream wird die Quelldatei immer byteweise gelesen bzw. geschrieben.
Bei einem Filestream wird eine Datei vollständig in den Arbeitsspeicher gelesen. Daher eignet sich der Filestream für Dateien kleiner und mittlerer Grösse. Filestream ist eine Möglichkeit, Dateien einfach und schnell zu verarbeiten. Der Filestream bietet sich für die Verarbeitung von Dateien an, die wenige Kilobyte oder Megabyte gross sind.

Konstanten für den Dateizugriff

Diese Konstanten bestimmen, wie auf eine Datei zugegriffen wird.

Konstante Dezimalwert Beschreibung
fmCreate 65280 Erstellt eine neue Datei
fmOpenRead 0 öffnet eine Datei lesend
fmOpenWrite 1 öffnet eine Datei schreibend
fmOpenReadWrite 2 öffnet eine Datei lesend und schreibend
fmShareDenyWrite 32 sperrt den Schreibzugriff auf eine Datei

Datei lesen

  ...

uses
  Classes, SysUtils;

function funDateiEinlesen(strDateiname: string): string;

  ...

implementation
  
  ...
  
function funDateiEinlesen(strDateiname: string): string;
var
  datQuelldatei: TFileStream;

begin

  // öffnet eine Datei zum Lesen und sperrt sie gleichzeitig gegen Schreibzugriffe
  datQuelldatei := TFileStream.Create(strDateiname, fmOpenRead or fmShareDenyWrite);

  try
    SetLength(funDateiEinlesen, datQuelldatei.Size);
    datQuelldatei.Read(funDateiEinlesen[1], datQuelldatei.Size);
  finally
    FreeAndNil(datQuelldatei);
  end;

end;
  ...


Beispiel für einen Unterprogrammaufruf um eine Datei einzulesen:

  ...

  // fügt eine Datei an das Ende des Memos an
  // das Ziel kann auch ein String sein usw.
  memo1.Append(funDateiEinlesen('test.txt'));

  ...

end;


Datei schreiben

  ...

uses
  Classes;

procedure subDateiSchreiben(strDateiname: string; strUebergabestring: string);

  ...

implementation

  ...

procedure subDateiSchreiben(strDateiname: string; strUebergabestring: string);
var
  datZieldatei: TFileStream;
  lngGroesse: longint;

begin

  datZieldatei := TFileStream.Create(strDateiname, fmCreate);
  lngGroesse := Length(strUebergabestring);

  try
    datZieldatei.Position := 0;
    datZieldatei.Write(strUebergabestring[1], lngGroesse);
  finally
    FreeAndNil(datZieldatei);
  end;

end;
  ...


Beispiel für einen Unterprogrammaufruf um eine Datei zu schreiben:

  ...

  // schreibt den Inhalt eines Memos in eine Datei
  // alternativ geht auch ein String
  subDateiSchreiben('test1.txt', memo1.Text);

  ...

end;



--Olaf 18:24, 23 January 2014 (CET)