Pascal - Dateihandhabung
Pascal behandelt eine Datei als eine Folge von Komponenten, die vom einheitlichen Typ sein müssen. Der Dateityp wird durch den Typ der Komponenten bestimmt. Der Datendatentyp ist definiert als -
type
file-name = file of base-type;
Wobei der Basistyp den Typ der Komponenten der Datei angibt. Der Basistyp kann alles andere als Integer, Real, Boolean, Enumerated, Subrange, Record, Arrays und Sets sein, mit Ausnahme eines anderen Dateityps. Variablen eines Dateityps werden mit der var- Deklaration erstellt -
var
f1, f2,...: file-name;
Im Folgenden finden Sie einige Beispiele zum Definieren einiger Dateitypen und Dateivariablen.
type
rfile = file of real;
ifile = file of integer;
bfile = file of boolean;
datafile = file of record
arrfile = file of array[1..4] of integer;
var
marks: arrfile;
studentdata: datafile;
rainfalldata: rfile;
tempdata: ifile;
choices: bfile;
Erstellen und Schreiben in eine Datei
Lassen Sie uns ein Programm schreiben, das eine Datendatei für die Aufzeichnungen der Schüler erstellt. Es würde eine Datei mit dem Namen students.dat erstellen und die Daten eines Schülers darin schreiben -
program DataFiles;
type
StudentRecord = Record
s_name: String;
s_addr: String;
s_batchcode: String;
end;
var
Student: StudentRecord;
f: file of StudentRecord;
begin
Assign(f,'students.dat');
Rewrite(f);
Student.s_name := 'John Smith';
Student.s_addr := 'United States of America';
Student.s_batchcode := 'Computer Science';
Write(f,Student);
Close(f);
end.
Beim Kompilieren und Ausführen erstellt das Programm eine Datei mit dem Namen students.dat im Arbeitsverzeichnis. Sie können die Datei mit einem Texteditor wie dem Editor öffnen, um die Daten von John Smith anzuzeigen.
Lesen aus einer Datei
Wir haben gerade eine Datei mit dem Namen students.dat erstellt und in diese geschrieben. Lassen Sie uns nun ein Programm schreiben, das die Daten des Schülers aus der Datei liest -
program DataFiles;
type
StudentRecord = Record
s_name: String;
s_addr: String;
s_batchcode: String;
end;
var
Student: StudentRecord;
f: file of StudentRecord;
begin
assign(f, 'students.dat');
reset(f);
while not eof(f) do
begin
read(f,Student);
writeln('Name: ',Student.s_name);
writeln('Address: ',Student.s_addr);
writeln('Batch Code: ', Student.s_batchcode);
end;
close(f);
end.
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
Name: John Smith
Address: United States of America
Batch Code: Computer Science
Dateien als Unterprogrammparameter
Mit Pascal können Dateivariablen als Parameter in Standard- und benutzerdefinierten Unterprogrammen verwendet werden. Das folgende Beispiel veranschaulicht dieses Konzept. Das Programm erstellt eine Datei mit dem Namen rainfall.txt und speichert einige Niederschlagsdaten. Als nächstes öffnet es die Datei, liest die Daten und berechnet den durchschnittlichen Niederschlag.
Bitte beachte, dass, if you use a file parameter with subprograms, it must be declared as a var parameter.
program addFiledata;
const
MAX = 4;
type
raindata = file of real;
var
rainfile: raindata;
filename: string;
procedure writedata(var f: raindata);
var
data: real;
i: integer;
begin
rewrite(f, sizeof(data));
for i:=1 to MAX do
begin
writeln('Enter rainfall data: ');
readln(data);
write(f, data);
end;
close(f);
end;
procedure computeAverage(var x: raindata);
var
d, sum: real;
average: real;
begin
reset(x);
sum:= 0.0;
while not eof(x) do
begin
read(x, d);
sum := sum + d;
end;
average := sum/MAX;
close(x);
writeln('Average Rainfall: ', average:7:2);
end;
begin
writeln('Enter the File Name: ');
readln(filename);
assign(rainfile, filename);
writedata(rainfile);
computeAverage(rainfile);
end.
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
Enter the File Name:
rainfall.txt
Enter rainfall data:
34
Enter rainfall data:
45
Enter rainfall data:
56
Enter rainfall data:
78
Average Rainfall: 53.25
Textdateien
Eine Textdatei in Pascal besteht aus Zeichenzeilen, wobei jede Zeile mit einer Zeilenende-Markierung abgeschlossen wird. Sie können solche Dateien deklarieren und definieren als -
type
file-name = text;
Der Unterschied zwischen einer normalen Zeichendatei und einer Textdatei besteht darin, dass eine Textdatei in Zeilen unterteilt ist, die jeweils durch eine spezielle Zeilenende-Markierung abgeschlossen werden, die vom System automatisch eingefügt wird. Im folgenden Beispiel wird eine Textdatei mit dem Namen contact.txt erstellt und in diese geschrieben.
program exText;
var
filename, data: string;
myfile: text;
begin
writeln('Enter the file name: ');
readln(filename);
assign(myfile, filename);
rewrite(myfile);
writeln(myfile, 'Note to Students: ');
writeln(myfile, 'For details information on Pascal Programming');
writeln(myfile, 'Contact: Tutorials Point');
writeln('Completed writing');
close(myfile);
end.
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
Enter the file name:
contact.txt
Completed writing
An eine Datei anhängen
Das Anhängen an eine Datei bedeutet das Schreiben in eine vorhandene Datei, die bereits einige Daten enthält, ohne die Datei zu überschreiben. Das folgende Programm veranschaulicht dies -
program exAppendfile;
var
myfile: text;
info: string;
begin
assign(myfile, 'contact.txt');
append(myfile);
writeln('Contact Details');
writeln('[email protected]');
close(myfile);
(* let us read from this file *)
assign(myfile, 'contact.txt');
reset(myfile);
while not eof(myfile) do
begin
readln(myfile, info);
writeln(info);
end;
close(myfile);
end.
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
Contact Details
[email protected]
Note to Students:
For details information on Pascal Programming
Contact: Tutorials Point
Funktionen zur Dateiverwaltung
Free Pascal bietet die folgenden Funktionen / Verfahren für die Dateiverwaltung:
Sr.Nr. | Funktionsname & Beschreibung |
---|---|
1 | procedure Append(var t: Text); Öffnet eine Datei im Anhänge-Modus |
2 | procedure Assign(out f: file; const Name:); Weist einer Datei einen Namen zu |
3 | procedure Assign(out f: file; p: PChar); Weist einer Datei einen Namen zu |
4 | procedure Assign(out f: file; c: Char); Weist einer Datei einen Namen zu |
5 | procedure Assign(out f: TypedFile; const Name:); Weist einer Datei einen Namen zu |
6 | procedure Assign(out f: TypedFile; p: PChar); Weist einer Datei einen Namen zu |
7 | procedure Assign(out f: TypedFile; c: Char); Weist einer Datei einen Namen zu |
8 | procedure Assign(out t: Text; const s:); Weist einer Datei einen Namen zu |
9 | procedure Assign(out t: Text; p: PChar); Weist einer Datei einen Namen zu |
10 | procedure Assign(out t: Text; c: Char); Weist einer Datei einen Namen zu |
11 | procedure BlockRead(var f: file; var Buf; count: Int64; var Result: Int64); Liest Daten aus einer Datei in den Speicher |
12 | procedure BlockRead(var f: file; var Buf; count: LongInt; var Result: LongInt); Liest Daten aus einer Datei in den Speicher |
13 | procedure BlockRead(var f: file; var Buf; count: Cardinal; var Result: Cardinal); Liest Daten aus einer Datei in den Speicher |
14 | procedure BlockRead(var f: file; var Buf; count: Word; var Result: Word); Liest Daten aus einer Datei in den Speicher |
15 | procedure BlockRead(var f: file; var Buf; count: Word; var Result: Integer); Liest Daten aus einer Datei in den Speicher |
16 | procedure BlockRead(var f: file; var Buf; count: Int64); Liest Daten aus einer Datei in den Speicher |
17 | procedure BlockWrite(var f: file; const Buf; Count: Int64; var Result: Int64); Schreibt Daten aus dem Speicher in eine Datei |
18 | procedure BlockWrite(var f: file; const Buf; Count: LongInt; var Result: LongInt); Schreibt Daten aus dem Speicher in eine Datei |
19 | procedure BlockWrite(var f: file; const Buf; Count: Cardinal; var Result: Cardinal); Schreibt Daten aus dem Speicher in eine Datei |
20 | procedure BlockWrite(var f: file; const Buf; Count: Word; var Result: Word); Schreibt Daten aus dem Speicher in eine Datei |
21 | procedure BlockWrite(var f: file; const Buf; Count: Word; var Result: Integer); Schreibt Daten aus dem Speicher in eine Datei |
22 | procedure BlockWrite(var f: file; const Buf; Count: LongInt); Schreibt Daten aus dem Speicher in eine Datei |
23 | procedure Close(var f: file); Schließt eine Datei |
24 | procedure Close(var t: Text); Schließt eine Datei |
25 | function EOF(var f: file):Boolean; Überprüft das Dateiende |
26 | function EOF(var t: Text):Boolean; Überprüft das Dateiende |
27 | function EOF: Boolean; Überprüft das Dateiende |
28 | function EOLn(var t: Text):Boolean; Überprüft das Zeilenende |
29 | function EOLn: Boolean; Überprüft das Zeilenende |
30 | procedure Erase(var f: file); Löscht die Datei von der Festplatte |
31 | procedure Erase(var t: Text); Löscht die Datei von der Festplatte |
32 | function FilePos( var f: file):Int64; Position in Datei |
33 | function FileSize(var f: file):Int64; Größe der Datei |
34 | procedure Flush(var t: Text); Schreibt Dateipuffer auf die Festplatte |
35 | function IOResult: Word; Gibt das Ergebnis der letzten Datei-E / A-Operation zurück |
36 | procedure Read(var F: Text; Args: Arguments); Liest aus der Datei in die Variable |
37 | procedure Read(Args: Arguments); Liest aus der Datei in die Variable |
38 | procedure ReadLn(var F: Text; Args: Arguments); Liest aus der Datei in die Variable und geht zur nächsten Zeile |
39 | procedure ReadLn(Args: Arguments); Liest aus der Datei in die Variable und geht zur nächsten Zeile |
40 | procedure Rename(var f: file; const s:); Benennt die Datei auf der Festplatte um |
41 | procedure Rename(var f: file; p: PChar); Benennt die Datei auf der Festplatte um |
42 | procedure Rename(var f: file; c: Char); Benennt die Datei auf der Festplatte um |
43 | procedure Rename(var t: Text; const s); Datei auf der Festplatte umbenennen |
44 | procedure Rename(var t: Text; p: PChar); Benennt die Datei auf der Festplatte um |
45 | procedure Rename( var t: Text; c: Char); Benennt die Datei auf der Festplatte um |
46 | procedure Reset(var f: file; l: LongInt); Öffnet die Datei zum Lesen |
47 | procedure Reset(var f: file); Öffnet die Datei zum Lesen |
48 | procedure Reset(var f: TypedFile); Öffnet die Datei zum Lesen |
49 | procedure Reset(var t: Text); Öffnet die Datei zum Lesen |
50 | procedure Rewrite(var f: file; l: LongInt); Öffnet die Datei zum Schreiben |
51 | procedure Rewrite(var f: file); Öffnet die Datei zum Schreiben |
52 | procedure Rewrite(var f: TypedFile); Öffnet die Datei zum Schreiben |
53 | procedure Rewrite(var t: Text); Öffnet die Datei zum Schreiben |
54 | procedure Seek(var f: file; Pos: Int64); Legt die Dateiposition fest |
55 | function SeekEOF(var t: Text):Boolean; Setzt die Dateiposition auf das Dateiende |
56 | function SeekEOF: Boolean; Setzt die Dateiposition auf das Dateiende |
57 | function SeekEOLn(var t: Text):Boolean; Setzt die Dateiposition auf das Zeilenende |
58 | function SeekEOLn: Boolean; Setzt die Dateiposition auf das Zeilenende |
59 | procedure SetTextBuf(var f: Text; var Buf); Legt die Größe des Dateipuffers fest |
60 | procedure SetTextBuf(var f: Text; var Buf; Size: SizeInt); Legt die Größe des Dateipuffers fest |
61 | procedure Truncate(var F: file); Schneiden Sie die Datei an der Position ab |
62 | procedure Write(Args: Arguments); Schreibt eine Variable in eine Datei |
63 | procedure Write(var F: Text; Args: Arguments); Variable in Datei schreiben |
64 | procedure Writeln(Args: Arguments); Schreibt eine Variable in eine Datei und hängt eine neue Zeile an |
65 | procedure WriteLn(var F: Text; Args: Arguments); Schreibt eine Variable in eine Datei und hängt eine neue Zeile an |