PDA

View Full Version : [C] Progetto database


Manugal
20-06-2006, 19:01
Ciao a tutti!! :)

Devo creare una funzione ReadRecord() che legge alcuni campi da un determinato record. Le specifiche della funzione (e di altre che dovrò sviluppare in questo modulo) sono qui: http://twiki.dsi.uniroma1.it/pub/Labprog2/ModuloQuattro/Modulo4/doc/html/modules.html

FieldValue è una struttura definita in questo modo:

typedef struct {

char Name[FIELD_NAME_LENGTH+1]; //!< Nome del campo
void *value; //!< Valore del campo

} FIELD_VALUE_t;

Il problema è che non riesco a capire come faccio a spostarmi sul campo che devo leggere, cioè su quale informazione mi baso per spostarmi in quel punto? Grazie.

trallallero
21-06-2006, 07:14
Ciao a tutti!! :)

Devo creare una funzione ReadRecord() che legge alcuni campi da un determinato record. Le specifiche della funzione (e di altre che dovrò sviluppare in questo modulo) sono qui: http://twiki.dsi.uniroma1.it/pub/Labprog2/ModuloQuattro/Modulo4/doc/html/modules.html

FieldValue è una struttura definita in questo modo:

typedef struct {

char Name[FIELD_NAME_LENGTH+1]; //!< Nome del campo
void *value; //!< Valore del campo

} FIELD_VALUE_t;

Il problema è che non riesco a capire come faccio a spostarmi sul campo che devo leggere, cioè su quale informazione mi baso per spostarmi in quel punto? Grazie.

void *value; ?? :confused: per il valore del campo ???
perché un puntatore void ?
ti complichi la vita cosí ;)
come la useresti questa struttura ?

ps: non ci posso andare sul sito che hai postato per "politiche aziendali" :muro:

Manugal
21-06-2006, 19:07
La struttura è per forza così, non l'ho creata io. E' richiesta dalle specifiche in questo modo. Dicono che visto che è void posso metterci qualsiasi valore. Questa contiene praticamente i nomi dei campi che dovrò andare a leggere e nel campo value dovrò mettere il valore del relativo campo. Su quel sito c'è scritto tutto in dettaglio, l'ho postato proprio per non scrivere tutto qua.

trallallero
22-06-2006, 08:22
La struttura è per forza così, non l'ho creata io. E' richiesta dalle specifiche in questo modo. Dicono che visto che è void posso metterci qualsiasi valore. Questa contiene praticamente i nomi dei campi che dovrò andare a leggere e nel campo value dovrò mettere il valore del relativo campo.

certo che se tu scrivi la sera ed io il mattino ... campacavallo! :)

Forse qualcuno mi correggerá ma mi sembra assurdo fare un record cosí!
Sarebbe meglio una struttura a lunghezza fissa:


typedef struct {

char Name [FIELD_NAME_LENGTH+1]; //!< Nome del campo
char Value[ VALUE_LENGTH+1]; //!< Valore del campo

} FIELD_VALUE_t;


anche in un char ci metti quello che vuoi ;)

Il vantaggio della struttura fissa é che con le funzioni
fread(...) e fwrite(...) tu leggi e scrivi intere strutture
a blocchi ;)

Ma nel tuo caso é diverso: siccome nel file non ci puoi scrivere
il puntatore (sarebbe assurdo) ma per forza il valore,
non puoi sapere quanto é grande il record.
Quindi te li devi leggere tutti, uno per uno :muro: e devi
stare bene attento a quando lo scrivi, il record, che ci
sia un delimitatore, un fine campo, sennó quando leggi
il record come fai a sapere che é finito ???
(ma chi minkia ha fatto le specifiche ??? :mbe: )
Per capirci, la sizeof(FIELD_VALUE_t) non corrisponde
con la reale dimensione del record sul file ;)


E poi in una struttura del genere servirebbe almeno un campo

int Length; // Dimensione del campo value

cosí quando leggi sai quanto devi allocare.
Ripeto ed insisto: fai cambiare le specifiche ;)

Su quel sito c'è scritto tutto in dettaglio, l'ho postato proprio per non scrivere tutto qua.
ho capito ma non ci posso andare, non é colpa mia :D

trallallero
22-06-2006, 08:57
Ho trovato il modo per leggere il sito con le specifiche :D
Ho "detto" a google di tradurlo e ... lo ha fatto ;)
quindi é mezzo in italiano e mezzo in inglese :rolleyes:
Ho solo capito che é molto diverso da come lo avevo
inteso io.

Scusa ma li si parla di database, il discorso diventa molto piú complesso, io pensavo ad un file sequenziale.
Non mi posso mettere a leggere tutte le specifiche ... :D

Manugal
23-06-2006, 10:38
Scusa sono stato molto occupato ultimamente.

Pensavo che leggendoti quest'ultime specifiche riuscivi a capire cosa bisognava fare. Pazienza. :)

Grazie lo stesso.

trallallero
23-06-2006, 11:04
beh, se vuoi mi mandi tutte le specifiche via mail,
me le studio, ti trovo una soluzione ... e ti mando la fattura :D