Προγραμματισμός με τη Free Pascal - Μέρος 7ο

From Ubuntucy Wiki

Jump to: navigation, search

Συγγραφή: Χατζηκυριάκου Γιώργος


Αρχεία κειμένου

Η δυνατότητα να αποθηκεύσεις σε ένα αρχείο δεδομένα ή να ανοίξεις ένα αρχείο κειμένου και να διαβάσεις τα περιεχόμενα του μπορεί να μας βοηθήσει πάρα πολύ στην ανάπτυξη προγραμμάτων. Εδώ θα ασχοληθούμε με την εγράφη και την ανάγνωση αρχείων κειμένου ή σειριακών αρχείων (sequential files).

Εγγραφή σε αρχείο κειμένου

Πρόγραμμα 1

Program Lesson7_Program1;
Var FName, Txt : String;
    UserFile   : Text; 

Begin
Write('Dose onoma arxeiou (px./home/george/test.txt) :');
 readln(FName);
 Assign(UserFile, FName);
 Rewrite(UserFile);
 Writeln('Grapse to kimeno : ');
 Readln(Txt);
 Writeln(UserFile,Txt);
 Close(UserFile);
End.

Επεξήγηση Προγράμματος

UserFile  : Text
Δηλώνουμε ότι το αρχείο θα περιέχει κείμενο(text).

Assign(UserFile, FName);
Αντιστοίχηση του αρχείου. Περνούν τα ορίσματα τύπος αρχείου και όνομα αρχείου(πλήρης διαδρομή). Δηλαδή το αρχείο FName θα είναι τύπου UserFile δηλαδή κείμενο.

Rewrite(UserFile);
Άνοιγμα του αρχείου FName για εγγραφή (αν έχει ήδη κείμενο το αρχείο σβήνετε και γράφει το νέο). Κάνοντας χρήση του Append(UserFile); προσθέτουμε το κείμενο στο τέλος του αρχείου (εφόσον υπάρχει το αρχείο !!!) κρατώντας το προηγούμενο κείμενο.


Writeln(UserFile,Txt);
Εγγραφή κειμένου στο αρχείο (όχι στην οθόνη).

Close(UserFile);
Κλείσιμο του αρχείου FName (απαιτείτε).

Ανάγνωση από αρχείο κειμένου

Πρόγραμμα 2

Program Lesson7_Program2;
Var UserFile : Text;
    FileName, TFile : String;

Begin
 Write('Dose onoma arxeiou (px./home/george/test.txt) :');
 readln(FileName);
 Assign(UserFile, FileName);
 Reset(UserFile);
 Repeat
  Readln(UserFile,TFile);
  Writeln(TFile);
 Until Eof(UserFile);
 Close(UserFile);
End.

Επεξήγηση Προγράμματος

Reset(UserFile);
Άνοιγμα του αρχείου FileName για ανάγνωση.

…
Repeat
  Readln(UserFile,TFile);
  Writeln(TFile);
 Until Eof(UserFile);
…

Διαβάζει από το αρχείο Readln(UserFile,TFile); Και να παρουσιάζει στην οθόνη Writeln(TFile); μέχρι να φτάσει στο τέλος του αρχείου Until Eof(UserFile);. (Eof – End of file)

Close(UserFile);
Κλείσιμο του αρχείου FileName (απαιτείτε).

Παρατηρήσεις

Η ανάγνωση του αρχείου γίνετε γραμμή-γραμμή μέχρι το τέλος του.

Διαγραφή Αρχείου (Προσοχή - Κίνδυνος !!!)

Πρόγραμμα 3

Program Lesson7_Program3;

Var UFile : Text;
FileName : String;

Begin
Write('Dose onoma arxeiou (px./home/george/test.txt) :');
readln(FileName);

Assign(UFile,FileName);
Erase(UFile);
End.

Επεξήγηση Προγράμματος Erase(UFile);
Άνοιγμα του αρχείου FileName για διαγραφή.


Άσκηση

Να γράψετε μια διαδικασία (procedure) στην pascal που θα ζητά τις πληροφορίες: όνομα, επίθετο, e-mail, τηλέφωνο και να τις αποθηκεύει σε αρχείο κειμένου(Append). 
Στη συνέχεια θα γίνεται ερώτηση αν θέλουμε να συνεχίσουμε να προσθέτουμε δεδομένα στο αρχείο. Αν η απάντηση είναι θετική θα ξανακαλείται η διαδικασία, ενώ αν 
είναι αρνητική θα τερματίζεται το πρόγραμμα.

Τα δεδομένα να αποθηκεύονται στο αρχείο στην εξής μορφή:



Onoma : Γιώργος
Epitheto : Χ.
e-mail : ghadjikyriacou@yahoo.com
Tilefono : 99123456
-----------------------------------------------

Personal tools