Απλά βάλτε ένα αρχείο είναι α δυαδική ακολουθία κάποιου τύπου. Σε Δελφοί, υπάρχουν τρεις κατηγορίες αρχείο: δακτυλογραφημένο, κείμενο, και χωρίς ιδιαίτερη προσοχή. Τα πληκτρολογημένα αρχεία είναι αρχεία που περιέχουν δεδομένα συγκεκριμένου τύπου, όπως διπλό, ακέραιο ή προηγουμένως καθορισμένο προσαρμοσμένο τύπο εγγραφής. Τα αρχεία κειμένου περιέχουν αναγνώσιμους χαρακτήρες ASCII. Τα αρχεία που δεν χρησιμοποιούνται είναι απαραίτητα όταν θέλουμε να επιβάλουμε τη μικρότερη δυνατή δομή σε ένα αρχείο.
Αρχεία πληκτρολογίου
Ενώ τα αρχεία κειμένου αποτελούνται από γραμμές τερματισμένες με CR / LF (#13#10) συνδυασμός, Τα πληκτρολογημένα αρχεία αποτελούνται από δεδομένα που λαμβάνονται από συγκεκριμένο τύπο δομής δεδομένων.
Για παράδειγμα, η ακόλουθη δήλωση δημιουργεί έναν τύπο εγγραφής που ονομάζεται TMember και μια σειρά από μεταβλητές εγγραφής TMember.
τύπος
TMember = Ρεκόρ
Ονομα: σειρά[50];
ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ:
σειρά[30];
Δημοσιεύσεις: LongInt;
τέλος;
var Μέλη: πίνακας[1..50] του TMember;
Προτού μπορέσουμε να γράψουμε τις πληροφορίες στο δίσκο, πρέπει να δηλώσουμε μια μεταβλητή τύπου αρχείου. Η ακόλουθη γραμμή κώδικα δηλώνει μια μεταβλητή αρχείου F.
var ΦΑ: αρχείο του TMember;
Σημείωση: Για να δημιουργήσετε ένα δακτυλογραφημένο αρχείο στους Δελφούς, χρησιμοποιούμε τα παρακάτω σύνταξη:
var SomeTypedFile: αρχείο του SomeType
Ο τύπος βάσης (SomeType) για ένα αρχείο μπορεί να είναι ένας κλιμακωτός τύπος (όπως Double), ένας τύπος πίνακα ή ένας τύπος εγγραφής. Δεν πρέπει να είναι μια μακρά σειρά, ένας δυναμικός πίνακας, μια κλάση, ένα αντικείμενο ή ένας δείκτης.
Για να αρχίσετε να εργάζεστε με αρχεία από τους Delphi, πρέπει να συνδέσετε ένα αρχείο σε ένα δίσκο σε μια μεταβλητή αρχείου στο πρόγραμμα μας. Για να δημιουργήσετε αυτόν τον σύνδεσμο, πρέπει να χρησιμοποιήσουμε AssignFile διαδικασία για τη σύνδεση ενός αρχείου σε δίσκο με μεταβλητή αρχείου.
AssignFile (F, 'Μέλη.dat')
Μόλις δημιουργηθεί η συσχέτιση με ένα εξωτερικό αρχείο, η μεταβλητή αρχείου F πρέπει να είναι «ανοικτή» για να την προετοιμάσει για ανάγνωση και γραφή. Καλούμε τη διαδικασία επαναφοράς για να ανοίξετε ένα υπάρχον αρχείο ή να ξαναγράψετε για να δημιουργήσετε ένα νέο αρχείο. Όταν ένα πρόγραμμα ολοκληρώσει την επεξεργασία ενός αρχείου, το αρχείο πρέπει να κλείσει χρησιμοποιώντας τη διαδικασία CloseFile. Αφού κλείσει ένα αρχείο, το σχετικό εξωτερικό του αρχείο ενημερώνεται. Η μεταβλητή αρχείου μπορεί στη συνέχεια να συσχετιστεί με ένα άλλο εξωτερικό αρχείο.
Σε γενικές γραμμές, πρέπει να χρησιμοποιούμε πάντα χειρισμού εξαιρέσεων; μπορεί να προκύψουν πολλά σφάλματα κατά την εργασία με αρχεία. Για παράδειγμα: αν καλέσουμε το CloseFile για ένα αρχείο που είναι ήδη κλειστό, ο Delphi αναφέρει ένα σφάλμα εισόδου / εξόδου. Από την άλλη πλευρά, αν προσπαθήσουμε να κλείσουμε ένα αρχείο αλλά δεν έχουμε ακόμα καλέσει το AssignFile, τα αποτελέσματα είναι απρόβλεπτα.
Γράψτε σε ένα αρχείο
Ας υποθέσουμε ότι έχουμε συμπληρώσει μια σειρά από μέλη των Δελφών με τα ονόματά τους, τα e-mail και τον αριθμό των θέσεων και θέλουμε να αποθηκεύσουμε αυτές τις πληροφορίες σε ένα αρχείο στο δίσκο. Το παρακάτω κομμάτι του κώδικα θα κάνει το έργο:
var
ΦΑ: αρχείο του TMember;
i: ακέραιο;
ξεκινήσει
Αναθέστε το αρχείο (F, 'members.dat');
Επανεγγραφή (F);
δοκιμάστε
Για j: = 1 προς το 50 κάνω
Γράψτε (F, Μέλη [j]);
τελικά
CloseFile (F);
τέλος;τέλος;
Διαβάστε από ένα Αρχείο
Για να ανακτήσετε όλες τις πληροφορίες από το αρχείο 'members.dat' θα χρησιμοποιήσουμε τα παρακάτω κώδικας:
var
Μέλος: Μέλος
ΦΑ: αρχείο του TMember;ξεκινήσει
Αναθέστε το αρχείο (F, 'members.dat');
Επαναφορά (F);
δοκιμάστε
ενώ δεν είναι Eof (F) ξεκινήστε
Διαβάστε (F, Μέλος)?
{DoSomethingWithMember;}
τέλος;
τελικά
CloseFile (F);
τέλος;τέλος;
Σημείωση: Eof είναι η λειτουργία ελέγχου EndOfFile. Χρησιμοποιούμε αυτή τη λειτουργία για να βεβαιωθείτε ότι δεν προσπαθούμε να διαβάσουμε πέρα από το τέλος του αρχείου (πέρα από την τελευταία αποθηκευμένη εγγραφή).
Αναζήτηση και τοποθέτηση
Τα αρχεία συνήθως προσπελάζονται διαδοχικά. Όταν διαβάζεται ένα αρχείο χρησιμοποιώντας την τυπική διαδικασία Ανάγεται ή γράφεται με τη συνήθη διαδικασία Γράψτε, η τρέχουσα θέση του αρχείου μετακινείται στο επόμενο συστατικό του αρχείου με αριθμητική διάταξη (επόμενο αρχείο). Τα πληκτρολογημένα αρχεία μπορούν επίσης να αποκτηθούν τυχαία μέσω της τυπικής διαδικασίας Seek, η οποία μετακινεί την τρέχουσα θέση του αρχείου σε ένα καθορισμένο στοιχείο. ο FilePos και Μέγεθος αρχείου οι λειτουργίες μπορούν να χρησιμοποιηθούν για τον προσδιορισμό της τρέχουσας θέσης του αρχείου και του τρέχοντος μεγέθους του αρχείου.
{επιστρέψτε στην αρχή - την πρώτη εγγραφή}
Αναζήτηση (F, 0)?
{πηγαίνετε στην 5η εγγραφή}
Αναζήτηση (F, 5);
{Μετάβαση στο τέλος - "μετά" την τελευταία εγγραφή}
Αναζήτηση (F, FileSize (F));
Αλλαγή και ενημέρωση
Έχετε μόλις μάθει πώς να γράφετε και να διαβάζετε ολόκληρη τη σειρά των μελών, αλλά τι γίνεται αν θέλετε μόνο να αναζητήσετε το 10ο μέλος και να αλλάξετε το ηλεκτρονικό ταχυδρομείο; Η επόμενη διαδικασία κάνει ακριβώς αυτό:
διαδικασία ChangeEMail (const RecN: ακέραιο; const Νέο Ηλεκτρονικό Μήνυμα: σειρά) ;var DummyMember: Μέλος;ξεκινήσει
{assign, open, block handling εξαιρέσεων}
Αναζήτηση (F, RecN);
Διαβάστε (F, DummyMember);
DummyMember. Email: = NewEMail;
{διαβάζει κινήσεις στην επόμενη εγγραφή, πρέπει να
επιστρέψτε στην αρχική εγγραφή, στη συνέχεια, γράψτε}
Αναζήτηση (F, RecN);
Γράψτε (F, DummyMember);
{κλείσιμο αρχείου}τέλος;
Ολοκλήρωση της εργασίας
Αυτό είναι - τώρα έχετε όλα όσα χρειάζεστε για να ολοκληρώσετε το έργο σας. Μπορείτε να γράψετε πληροφορίες των μελών στο δίσκο, να τις διαβάσετε και μπορείτε να αλλάξετε μερικά από τα δεδομένα (e-mail, για παράδειγμα) στο "μεσαίο" του αρχείου.
Αυτό που είναι σημαντικό είναι ότι αυτό το αρχείο δεν είναι ένα Αρχείο ASCII, έτσι φαίνεται Μπλοκ ΣΗΜΕΙΩΣΕΩΝ (μόνο μία εγγραφή):
.Delphi Guide g Ò5 · ¿ì. 5.. B V.Lƒ, "¨[email protected]Ï.. ç.ç.ï..