Specifiche comuni a tutti i Moduli


Modules

 Costanti
 Strutture
 Funzioni comuni

Functions

void LPC_GestioneErrore (int ErrorCode, char *Func, char *Msg)
 Stampa l'errore.
int CreateDatabaseFile (char *Name, int NumFields, FIELD_DATA_t *FieldData)
 Crea un file di database con nome Name.
int DeleteDatabaseFile (char *Name)
 Cancella un file di database con nome Name.

Function Documentation

int CreateDatabaseFile char *  Name,
int  NumFields,
FIELD_DATA_t FieldData
 

Crea un file di database con nome Name.

Name è una stringa non nulla e NULL terminated e rappresenta il nome del file da creare.
Il nome del file deve contenere solo caratteri alfanumerici + il carattere '_' e deve iniziare con un carattere alfabetico.
La lunghezza totale del nome viene troncata a DBF_NAME_LENGTH caratteri e viene aggiunta l'estensione DBF_EXTENSION.

NumFields è il numero dei campi del DBF che sono definiti nel vettore di strutture FieldData.
Deve essere 0 < NumFields <= DBF_MAX_FIELDS Per ogni campo deve essere definito:

  • Name
    • Nome del campo. Deve contenere solo caratteri alfanumerici + il carattere '_' e deve iniziare con un carattere alfabetico. Ogni campo deve avere un nome differente nell'ambito dello stesso DBF
  • FieldType
    • Tipo del campo. Puo' valere solo CHARACTER, NUMERIC, DATE, LOGICAL.
  • FieldLen
    • Lunghezza totale del campo. Valido solo per campi di tipo CHARACTER .
      • CHARACTER: 1 <= FieldLen <= FIELD_CHAR_LEN
        • NUMERIC: lunghezza fissa a FIELD_NUM_LEN
        • DATE: lunghezza fissa a FIELD_DATE_LEN
        • LOGICAL: lunghezza fissa a FIELD_LOGI_LEN

Una volta creato, il database file viene chiuso, e per essere utilizzato deve essere chiamata la funzione OpenDatabaseFile().

Parameters:
[in] Name Nome del database file, stringa alfanumerica + '_' NULL terminated.
[in] NumFields numero di campi del database.
[in] *FieldData Vettore di strutture di dimensione numfields.
Returns:
LPC_OK Database creato

LPC_BAD_ARG Nome DB nullo o non valido o NumFields <= 0

LPC_BAD_FIELD Valore di uno dei campi non valido: nome, tipo, lunghezza o duplicato.

LPC_NO_MEMORY Errore in allocazione memoria.

LPC_FILE_EXISTS File DBF gia' esistente.

LPC_ERR_WRITE Errore in scrittura su file.

See also:
DeleteDatabaseFile().
Author:
Gianni Campanile

Stefano Guerrini

Andrea Sterbini

Date:
Gennaio 2006
Version:
1.0

int DeleteDatabaseFile char *  Name  ) 
 

Cancella un file di database con nome Name.

Name è una stringa non nulla e NULL terminated e rappresenta il nome del file da creare.
Il nome deve essere quello di un DBF precedentemente creato con la funzione CreateDatabaseFile().
La lunghezza totale del nome viene troncata a DBF_NAME_LENGTH caratteri e viene aggiunta l'estensione DBF_EXTENSION.

Il database deve essere chiuso, cioe' non deve esistere un file con lo stesso nome e estensione DBF_OPEN_EXT.

Parameters:
[in] Name Nome del database file, stringa alfanumerica + '_' NULL terminated.
Returns:
LPC_OK Database cancellato

LPC_BAD_ARG Nome DB nullo o non valido

LPC_DBF_OPEN Il database è aperto.

LPC_FILE_ACCESS Il file non esiste o non può essere cancellato.

See also:
CreateDatabaseFile().
Author:
Gianni Campanile

Stefano Guerrini

Andrea Sterbini

Date:
Gennaio 2006
Version:
1.0

void LPC_GestioneErrore int  ErrorCode,
char *  Func,
char *  Msg
 

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.
Il messaggio di errore e' una stringa che puo' contenere le informazioni aggiuntive per il miglior monitoraggio dell'errore.

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);
                }
        ....
        }

Parameters:
[in] ErrorCode Codice dell'errore
[in] Func Funzione da cui viene la chiamata
[in] Msg Messaggio di errore
Author:
Gianni Campanile

Stefano Guerrini

Andrea Sterbini

Date:
Gennaio 2006
Version:
1.0


Generated on Wed Mar 1 11:56:01 2006 for LPC - Modulo 1 by  doxygen 1.4.6-NO