Modules | |
Costanti | |
Strutture | |
Funzioni comuni | |
Functions | |
void | LPC_GestioneErrore (int ErrorCode, char *Func, char *Msg) |
Stampa l'errore. | |
int | ReadRecord (int handle, int NumValues, FIELD_VALUE_t *FieldValue) |
Legge i valori dei campi del record corrente da un database file aperto. | |
int | EditRecord (int handle, int NumValues, FIELD_VALUE_t *FieldValue) |
Modifica i valori dei campi del record corrente in un database file aperto. | |
int | LocateRecord (int handle, int NumValues, FIELD_VALUE_t *FieldValue, int How) |
Trova un record con valori dati in un database file aperto. |
|
Modifica i valori dei campi del record corrente in un database file aperto.
Modifica i valori di alcuni campi sul record corrente nel database file. A seconda del tipo campo, i valori ammessi sono:
In tutti i casi vengono memorizzati tutti i caratteri fino alla lunghezza dichiarata per il campo, quindi value deve essere allocato adeguatamente. Se un campo non viene specificato in FieldValue (come nome), il suo valore non viene modificato.
Il record corrente viene incrementato di 1 e viene aggiornato il timestamp. Se non ci sono record oppure non c'è record corrente (fine file) viene ritornato
|
|
Trova un record con valori dati in un database file aperto.
Cerca il primo record che abbia dei valori in determinati campi.
La funzione ritorna il numero del record corrente se trova un record con quei valori, altrimenti
Se il record viene trovato, diventa il nuovo record corrente, altrimenti il record corrente non viene modificato, cioè viene ripristinata la posizione iniziale. Se nel file non ci sono record viene ritornato sempre
|
|
Stampa l'errore. Scrive un codice di errore, la funzione chiamante e un messaggio di errore. L'errore viene stampato su stderr. Il parametro ErrorCode è il codice di errore. Func e' il nome della funzione che sta intercettando l'errore e Msg e' il messaggio di errore.
Da notare che Func non è il nome della funzione che ha generato un errore, ma il nome della funzione che lo ha ricevuto. I codici di errore delle funzioni da implementare sono già definiti in LPC_Include.h Tutti i codice di errore sono negativi. Esempio di gestione dell'errore: int Insert() { .... if (NumFields < 0) { char Err[256]; (void) sprintf(Err, "Errore parametro NumFields negativo"); LPC_GestioneErrore(LPC_BAD_ARG, "Insert", Err); < Liberare tutta la memoria allocata in questa funzione > return(LPC_BAD_ARG); } .... } Esempio di gestione dell'errore su allocazione memoria: int Insert() { .... buf = calloc(10, sizeof(long)); if (!buf) { char Err[256]; (void) sprintf(Err, "Errore allocazione memoria"); LPC_GestioneErrore(LPC_NO_MEMORY, "Insert", Err); < Liberare tutta la memoria allocata in questa funzione > return(LPC_NO_MEMORY); } .... } Esempio di gestione dell'errore ritornato da una chiamata ad una funzione di sistema: int Insert() { .... ret = fwrite(buffer, sizeof(char), len, fp); if (ret != len) { char Err[256]; (void) sprintf(Err, "Errore di sistema [%d] in scrittura su file:[%s]", errno, strerror(errno)); LPC_GestioneErrore(LPC_ERR_WRITE, "Insert", Err); < Liberare tutta la memoria allocata in questa funzione > return(LPC_ERR_WRITE); } .... } Esempio di gestione errore per una chiamata ad una funzione interna: int Insert() { ... ret = GetDBFInfo(handle, &DBFInfo); if (ret != LPC_OK) { char Err[256]; (void) sprintf(Err, "Errore chiamata alla GetDBFInfo:[%d]", ret); LPC_GestioneErrore(ret, "Insert", Err); return(ret); } .... }
|
|
Legge i valori dei campi del record corrente da un database file aperto.
Legge i valori di alcuni campi dal record corrente nel database file.
E' responsabilità del chiamante di allocare/deallocare FieldValue per il numero di elementi necessari e il rispettivo campo value per contenere i valori da leggere.
Il record corrente viene incrementato di 1; non viene modificata la data di ultima modifica del file. Se non ci sono record oppure non c'è record corrente (fine file) viene ritornato
|