Crea un database usando il file dei file digitati di Delphi

In poche parole, un file è una sequenza binaria di qualche tipo. In Delphi, ci sono tre classi di file: digitato, testo e non tipizzato. I file digitati sono file che contengono dati di un tipo particolare, come Double, Integer o Tipo di record personalizzato precedentemente definito. I file di testo contengono caratteri ASCII leggibili. I file non tipizzati vengono utilizzati quando vogliamo imporre la struttura il meno possibile su un file.

File digitati

Mentre i file di testo sono costituiti da righe terminate con una combinazione CR / LF (# 13 # 10), i file digitati sono costituiti da dati presi da un particolare tipo di struttura dati.

Ad esempio, la seguente dichiarazione crea un tipo di record chiamato TMember e un array di variabili record TMember.

 genere

   TMember = disco

     Nome : corda[50];

    e-mail :
corda[30];

    Messaggi: LongInt;
  
fine;

 
var Membri : Vettore[1… 50] di TMember; 

Prima di poter scrivere le informazioni sul disco, dobbiamo dichiarare una variabile di un tipo di file. La seguente riga di codice dichiara una variabile del file F..

 var F: file di TMember; 

Nota: per creare un file digitato in Delphi, utilizziamo la sintassi seguente:

var SomeTypedFile: file di SomeType

Il tipo di base (SomeType) per un file può essere un tipo scalare (come Double), un tipo di array o un tipo di record. Non dovrebbe essere una stringa lunga, un array dinamico, una classe, un oggetto o un puntatore.

Per iniziare a lavorare con i file di Delphi, dobbiamo collegare un file su un disco a una variabile di file nel nostro programma. Per creare questo link, dobbiamo usare AssignFile procedura per associare un file su un disco a una variabile di file.

 AssignFile (F, 'Members.dat') 

Una volta stabilita l'associazione con un file esterno, la variabile di file F deve essere "aperta" per prepararla per la lettura e la scrittura. Chiamiamo la procedura di ripristino per aprire un file esistente o riscrivere per creare un nuovo file. Quando un programma completa l'elaborazione di un file, il file deve essere chiuso utilizzando la procedura CloseFile. Dopo la chiusura di un file, il file esterno associato viene aggiornato. La variabile file può quindi essere associata a un altro file esterno.

In generale, dovremmo sempre usare la gestione delle eccezioni; possono verificarsi molti errori quando si lavora con i file. Ad esempio: se chiamiamo CloseFile per un file che è già chiuso, Delphi segnala un errore I / O. D'altra parte, se proviamo a chiudere un file ma non abbiamo ancora chiamato AssignFile, i risultati sono imprevedibili.

Scrivi in ​​un file

Supponiamo di aver riempito un array di membri di Delphi con i loro nomi, e-mail e numero di post e che vogliamo archiviare queste informazioni in un file sul disco. Il seguente pezzo di codice farà il lavoro:

 var

   F: file di TMember;

  i: numero intero;
inizio

  AssignFile (F, 'members.dat');

  Riscrivi (F);

  provare

   per j: = 1 per 50 fare

    Scrivi (F, Membri [j]);

  infine

   CloseFile (F);

  fine;fine; 

Leggi da un file

Per recuperare tutte le informazioni dal file 'members.dat' dovremmo usare il seguente codice:

 var

   Membro: TMember

   F: file di TMember;inizio

  AssignFile (F, 'members.dat');

  Reset (F);

  provare

   mentre no Eof (F) iniziare

    Leggi (F, Membro);

    DoSomethingWithMember;

   fine;

 
infine

   CloseFile (F);

  fine;fine; 

Nota: Eof è la funzione di controllo EndOfFile. Usiamo questa funzione per assicurarci di non provare a leggere oltre la fine del file (oltre l'ultimo record memorizzato).

Ricerca e posizionamento

I file sono normalmente accessibili in sequenza. Quando un file viene letto utilizzando la procedura standard Lettura o scrittura utilizzando la procedura standard Scrivi, la posizione corrente del file si sposta sul successivo componente del file ordinato numericamente (record successivo). È inoltre possibile accedere ai file digitati in modo casuale tramite la procedura standard Seek, che sposta la posizione del file corrente su un componente specificato. Il FilePos e Dimensione del file le funzioni possono essere utilizzate per determinare la posizione corrente del file e la dimensione del file corrente.

 torna all'inizio - il primo record

 Cerca (F, 0);

 

 vai al 5 ° record

 Cerca (F, 5);

 

 Vai alla fine - "dopo" l'ultimo record

 Cerca (F, FileSize (F)); 

Cambia e aggiorna

Hai appena imparato a scrivere e leggere l'intero array di membri, ma cosa succede se tutto ciò che vuoi fare è cercare il decimo membro e cambiare l'e-mail? La procedura successiva fa esattamente questo:

 procedura Cambia email(const RecN: numero intero; const Nuova email : corda);var DummyMember: TMember;inizio

  assegnare, aprire, blocco gestione eccezioni

  Cerca (F, RecN);

  Leggi (F, DummyMember);

  DummyMember.Email: = NewEMail;

  leggi passa al prossimo record, dobbiamo

 tornare al record originale, quindi scrivere
  Cerca (F, RecN);

  Scrivi (F, DummyMember);

  chiudi filefine;

Completamento dell'attività

Questo è tutto, ora hai tutto ciò che ti serve per svolgere il tuo compito. Puoi scrivere le informazioni dei membri sul disco, puoi rileggerle e puoi anche modificare alcuni dei dati (e-mail, ad esempio) nel "mezzo" del file.

La cosa importante è che questo file non è un file ASCII, ecco come appare nel Blocco note (solo un record):

 .Guida di Delfi g Ò5 · ¿ì. 5 ... B V.Lƒ, „¨[email protected]Ï… ç.ç.ï ...