Specifiche Interne Modulo 4
[Modulo4]

Modifica di record

Formato di un record

Il valore di un campo di un record e' cosi' memorizzato:

La sequenza dei valori in ogni record sul file rispetta la sequenza dei campi definiti nell'header.

Conversione di un double

Non vi sono funzioni di conversione Host-To_Nework e viceversa per il formato double. E' quindi necessario sviluppare una funzione che verifichi l'ordinamento dei byte e sviluppare le funzioni di conversione host-to-network e network-to-host.

Lettura di un record

Come leggere

E' permesso leggere tutto il record anche se vengono richiesti solo alcuni campi. Non e' consentito leggere un blocco piu' grande di un record. La lettura sposta il record corrente al record successivo. Vengono letti tanti byte quanto e' la lunghezza del campo, anche se i byte sono nulli.

Sequenza dei campi

La sequenza dei campi che vengono richiesti in lettura può essere qualunque, quindi va fatta attenzione a calcolare il punto di inizio del campo nell'ambito del record.

La struttura di lettura

Il campo value della struttura FIELD_VALUE_t è un void *, quindi può essere utilizzato per leggere qualunque tipo di dato.

Modifica di un record

Come scrivere

E' permesso riscrivere tutto il record anche se devono essere modificati solo alcuni campi. Non e' consentito scrivere un blocco dati piu' grande di un record. Ovviamente i valori da non modificare vanno preservati leggendo prima il record. Per questa operazione non e' permesso utilizzare la ReadRecord() anche se possono essere utilizzate funzioni interne che pero' non effettuino controlli inutili quali la riverifica dell handle o altri controlli gia' effettuati. In altre parole non e' consentito richiamare una funzione che implementi tutta la logica della ReadRecord() ma solo funzioni interne di lettura del record e conversione dei valori. Anche in questo caso il record corrente si incrementa di 1, cioè ci si deve posizionare alla fine del record scritto.

Sequenza dei campi

La sequenza dei campi nel vettore di strutture FieldValue e' arbitrario, quindi va fatta attenzione a calcolare il punto di inizio del campo nell'ambito del record.

Ricerca di un record

Ricerca di un valore

L'implementazione della LocateRecord() non può utilizzare la funzione GotoRecord() del Modulo3 per lo spostamento su file né la funzione ReadRecord(). Se il record viene trovato deve essere modificata la posizione del puntatore di lettura/scrittura sempre senza utilizzare la GotoRecord(), altrimenti il puntatore deve essere riportato alla posizione di partenza.
Generated on Tue May 23 15:52:17 2006 for LPC - Modulo 4 by  doxygen 1.4.6-NO