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