130 likes | 263 Views
File ad accesso casuale o random. La principale differenza tra i file sequenziali e i file ad accesso casuale è che in un file ad accesso casuale è possibile leggere e scrivere i dati in qualsiasi ordine.
E N D
File ad accesso casuale o random • La principale differenza tra i file sequenziali e i file ad accesso casuale è che in un file ad accesso casuale è possibile leggere e scrivere i dati in qualsiasi ordine. • Con i file sequenziali è sempre necessario partire dall’inizio del file e procedere in ordine con la scansione attraverso il file.
I file Random offrono maggiore velocità e la capacità di accedere ai dati in base al numero di record . Con questa organizzazione ogni record viene registrato ed identificato in base ad un numero progressivo di record. Ogni record pertanto può essere letto o scritto senza accedere ai record precedenti. I record all’interno dell’archivio sono di lunghezza fissa
Operazioni sui file • Le operazioni che possiano fare sono : • inserimento • lettura • modifica • cancellazione : • logica • fisica
Dichiarazione del struttura dati record • La dichiarazione del record avviene come per i file sequenziali a livello di modulo : • type merci • codice as string *5 • prodotto as string * 20 • prezzoun as currency • quantità as integer • end type • public prodotti as merci • definiamo una variabile col nome prodotti che prenderà il tipo della struttura record di nome merci.
Funzioni • Per la gestione dei file random è necessario avvalersi di alcune funzioni predefinite del V.B. : • len : restituisce il numero di caratteri presenti in una stringa o nel nostro caso in un record es : lr = len(prodotti) • freefile : restituisce il primo numero di file disponibile da utilizzare con la open. Questa funzione si utilizza quando si devono gestire più archivi
Lof (length of file) : restituisce la dimensione in byte del file aperto con la open . Dividendo la lunghezza totale in byte del file per la lunghezza del record otteniamo il numero di record registrati in archivio ( la divisione si fa con l’operatore \ di divisione fra interi ) • seek : utilizzata quando è necessario stabilire la posizione del puntatore all’interno del file, la funzione restituisce la posizione del record successivo nel file. La sintassi è la seguente : • seek(numerofile) oppure posizione = seek(1)
Apertura di un file • Un file random deve essere aperto in modalità randomper tutte le operazioni che dobbiamo compiere sul file sia lettura che scrittura e riscrittura. • La sintassi è la seguente : • open nomepercorso [for random] as numerofile len = lunghezzarecord
esempio : open “c:\5dp\magazzino.dat” [for random] as 1 len=prodotticon tale istruzione il file è aperto per compiere qualsiasi operazione (lettura, scrittura, modifica) for random è posto fra parentesi quadre poichè si può anche ometterlo, cioè viene riconosciuta automaticamente la modalità random
Operazione di scrittura • L’operazione di scrittura sul un file ad A.R. viene eseguita con l’struzione PUT, la sintassi è la seguente : • put #numerofile, posizione ,nomerecord • la posizione viene calcolata come già visto con questa formula usando le funzioni preelencate • posizione =LOF(1) \ LEN(prodotti) • per aggiungere un nuovo record, alla funzione numero dei record si aggiunge un’unità in più
Operazione di lettura • L’operazione di lettura sul un file ad A.R. viene eseguita con l’struzione GET , la sintassi è la seguente : • get #numerofile, posizione ,nomerecord • la posizione è data in input o calcolata
Modifica di un record • per modificare record già esistenti si devono eseguire i seguenti passi • individuare il numero del record da modificare • fornire i nuovi valori per i campi • utilizzare l’istruzione put per la riscrittura specificando la posizione del record
Cancellazione logica di un record • Per cancellare logicamente record si procede in questo modo : • individuare il numero del record da cancellare • contrassegnare un campo del record con un carattere particolare esempio il campo codice con : “*****” • utilizzare l’istruzione put per la riscrittura specificando la posizione del record
Cancellazione fisica • La cancellazione fisica si attua attraverso questi passi: • si crea un file destinazione avente la stessa struttura record del file origine • leggendo sequenzialmente il file origine si copiano nel file destinazione tutti i record che devono essere mantenuti nel file • alla fine si chiudono i due file e si cancella il file origine con l’istruzione Kill • si rinomina il file assegnando il nome del file origine rimosso