Sign in Join
Wiki copytemporary

TFileStream/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: TFileStream/de

OldNewLine
1+Zurück zu den [[File types/de|Dateitypen]].\
2+
3+## Filestream
4+
5+Filestream ist eine Möglichkeit, Dateien einfach und schnell zu verarbeiten. Der Filestream bietet sich für die Verarbeitung von Dateien jeglicher Größe an.
6+
7+TFileStream bietet keine Pufferung, sodass bei wiederholtem Zugriff auf einen Teil einer Datei dieser in einen Puffer geladen werden sollte. Auch sollte nicht sequenziell Byte für Byte sondern nach Möglichkeit immer in Blöcken gelesen werden. Für höchste Lesegeschwindigkeit bei großen Dateien sollte sich die Blockgröße an der Größe der Seitengröße des Betriebssystems orientieren.
8+
9+# Konstanten für den Dateizugriff
10+
11+Diese Konstanten bestimmen, wie auf eine Datei zugegriffen wird. Die Konstanten beginnend mit `fmShare` können immer mit angegeben werden, werden aber nicht von allen Betriebssystemen unterstützt.
12+
13+| Konstante | Dezimalwert | Beschreibung |
14+|----|----|----|
15+| fmCreate | 65280 | Erstellt eine neue Datei |
16+| fmOpenRead | 0 | öffnet eine Datei lesend |
17+| fmOpenWrite | 1 | öffnet eine Datei schreibend |
18+| fmOpenReadWrite | 2 | öffnet eine Datei lesend und schreibend |
19+| fmShareCompat | 0 | |
20+| fmShareExclusive | 16 | exklusiver Dateizugriff; andere Programme können nicht auf die Datei zugreifen |
21+| fmShareDenyWrite | 32 | sperrt den Schreibzugriff auf eine Datei |
22+| fmShareDenyRead | 48 | andere Programme dürfen die Datei nicht lesen, aber weiterhin beschreiben (z.B. weitere Daten anhängen) |
23+| fmShareDenyNone | 64 | andere Programme können weiterhin lesend und schreibend auf die Datei zugreifen. |
24+
25+## Datei lesen
26+
27+In diesen Beispielen wird die Datei vollständig in den Arbeitsspeicher geladen. Damit eignet sich dieser Ansatz nur für kleine bis mittelgroße Dateien. Je nach verfügbaren Arbeitsspeicher kann die sinnvolle Grenze bei einigen Kilobyte bis einigen Megabyte liegen.
28+
29+``` pascal
30+uses
31+ Classes, SysUtils;
32+
33+function DateiInStringEinlesen(strDateiname: string): string;
34+var
35+ stream: TFileStream;
36+begin
37+ // öffnet eine Datei zum Lesen und sperrt sie gleichzeitig gegen Schreibzugriffe
38+ stream := TFileStream.Create(strDateiname, fmOpenRead or fmShareDenyWrite);
39+ try
40+ SetLength(Result, stream.Size);
41+ stream.Read(Result[1], stream.Size);
42+ finally
43+ stream.Free;
44+ end;
45+end;
46+```
47+
48+Beispiel für einen Unterprogrammaufruf, um eine Datei in einen String einzulesen und an an Memo anzuhängen:
49+
50+``` pascal
51+ Memo1.Append(DateiInStringEinlesen('test.txt'));
52+```
53+
54+## Datei schreiben
55+
56+``` pascal
57+uses
58+ Classes, SysUtils;
59+
60+procedure StringInDateiSchreiben(strDateiname, strUebergabestring: string);
61+var
62+ stream: TFileStream;
63+ lngGroesse: longint;
64+begin
65+ stream := TFileStream.Create(strDateiname, fmCreate);
66+ lngGroesse := Length(strUebergabestring);
67+ try
68+ stream.Position := 0;
69+ stream.Write(strUebergabestring[1], lngGroesse);
70+ finally
71+ stream.Free;
72+ end;
73+end;
74+```
75+
76+Beispiel für einen Unterprogrammaufruf, um den Memo-Inhalt als String in eine Datei zu schreiben:
77+
78+``` pascal
79+ StringInDateiSchreiben('test1.txt', memo1.Text);
80+```
81+
82+---
83+*From the Free Pascal wiki, page "TFileStream/de", as it stood on 2020-01-17 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
84+Category: Deutsch
85+Category: Pascal/de
86+Category: Tutorials/de

Back to history