LPC - Funzioni di interfaccia
[Specifiche]


Functions

int CreateDatabaseFile (char *Name, int NumFields, FIELD_DATA_t *FieldData)
 Crea un DBF.
int DeleteDatabaseFile (char *Name)
 Cancella un DBF.
int OpenDatabaseFile (char *Name, int Mode)
 Apre un DBF.
int CloseDatabaseFile (int handle)
 Chiude un DBF.
int GetDBFInfo (int handle, DBF_INFO_t *DBFInfo)
 Legge informazioni di un DBF aperto.
int GetFieldInfo (int handle, int NumFields, FIELD_DATA_t *FieldData)
 Legge informazioni di uno o piu' campi di un DBF aperto.
int IsDBFHandle (int handle)
 Verifica se un handle è corretto.
int IsDBFOpen (int handle)
 Verifica se un DBF e' aperto.
void LPC_GestioneErrore (int ErrorCode, char *Func, char *Msg)
 Funzione di gestione dell'errore.

Detailed Description

Funzioni di interfaccia

Function Documentation

int CloseDatabaseFile int  handle  ) 
 

Chiude un DBF.

handle deve essere un handle valido ricavato da una precedente chiamata alla OpenDatabaseFile().

Parameters:
handle L'handle del database aperto.
Returns:
LPC_OK Database chiuso

LPC_BAD_ARG handle non valido

LPC_FILE_ACCESS Errore di chiusura file

Author:
Gianni Campanile

Stefano Guerrini

Andrea Sterbini

Date:
Gennaio 2006
Version:
1.0

int CreateDatabaseFile char *  Name,
int  NumFields,
FIELD_DATA_t FieldData
 

Crea un DBF.

Name è una stringa 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.

I campi del database sono numfields e sono definiti nel vettore di strutture FieldData. Per ogni campo deve essere definito:
ElementoSignificato
Nome campo deve contenere solo caratteri alfanumerici + il carattere '_' e deve iniziare con un carattere alfabetico.
Tipo campo puo' valere solo CHARACTER, NUMERIC, DATE, LOGICAL.
Lunghezza Solo per CHARACTER o NUMERIC:
CHARACTER: 0 < len <= FIELD_CHAR_LEN
NUMERIC: 0 < len <= 15
La lunghezza per i campi NUMERIC comprende il segno, l'eventuale punto decimale e i decimali.
Decimali Solo PER NUMERIC.Deve essere 0 <= Dec <= (min(Lunghezza-2;FIELD_DEC_LEN))
Ad esempio, se si specifica il campo: prova NUMERIC 5 3 vuol dire che il campo in totale occupa 5 posizioni, con 3 decimali, la parte intera è quindi di 1 carattere (esempio 1.223).

Questa funzione scrive nel database l'header, che è così formato:

Caratteri Valore DBF_NAME_LENGTH+1 Nome del database + NULL. Se il nome è più corto si riempie di NULL. 2 Numero di campi 4 Numero di record 2 Lunghezza totale Header 2 Lunghezza di ogni record 4 timestamp ultimo update FIELD_NAME_LENGTH+1 Nome del primo campo + NULL. Se il nome è più corto si riempie di NULL. .... FIELD_NAME_LENGTH+1 Nome dell'ultimo campo + NULL. Se il nome è più corto si riempie di NULL. 2 NULL+NULL

Nel file LPC_Costanti.h vi sono 2 costanti per calcolare la lunghezza totale dell'Header: DBF_FIXED_HEADER_LEN lunghezza della parte fissa ad esclusione dei 2 NULL finali DBF_FIELD_LEN lunghezza della definizione di ogni campo.

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

Parameters:
Name Nome del database file, stringa alfanumerica + '_' NULL terminated.
NumFields numero di campi del database. Deve essere 0 < numfields <= DBF_MAX_FIELDS
*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.

See also:
DeleteDatabaseFile().
Author:
Gianni Campanile

Stefano Guerrini

Andrea Sterbini

Date:
Gennaio 2006
Version:
1.0

int DeleteDatabaseFile char *  Name  ) 
 

Cancella un DBF.

Name è una stringa NULL terminated e rappresenta il nome del file da cancellare. Il nome del file deve contenere solo caratteri alfanumerici + il carattere '_' e deve iniziare con un carattere. La lunghezza totale del nome viene troncata a DBF_NAME_LENGTH caratteri. Al nome viene aggiunta l'estensione ".dbf". Il database deve essere chiuso, quindi viene verificato che non esista un file con lo stesso nome che inizi con DBF_OPEN_SHARE o DBF_OPEN_EXCL e con estensione DBF_OPEN_EXT.

Parameters:
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.

See also:
CreateDatabaseFile().
Author:
Gianni Campanile

Stefano Guerrini

Andrea Sterbini

Date:
Gennaio 2006
Version:
1.0

int GetDBFInfo int  handle,
DBF_INFO_t DBFInfo
 

Legge informazioni di un DBF aperto.

handle deve essere un handle valido ricavato da una precedente chiamata alla OpenDatabaseFile(). Riempie la struttura DBFInfo con tutte le informazioni del DBF. In particolare il record corrente (CurrentRec) e' sempre > 0, anche se non ci sono record (in quel caso vale 1). Indica infatti il punto di inizio di lettura del prossimo record. Per sapere se ci sono record, bisogna basarsi su NumRecs.

Parameters:
handle L'handle del database aperto.
DBFInfo Struttura che riceve le informazioni
Returns:
LPC_OK Informazioni ottenute

LPC_BAD_ARG handle non valido o puntatore NULL

Author:
Gianni Campanile

Stefano Guerrini

Andrea Sterbini

Date:
Gennaio 2006
Version:
1.0

int GetFieldInfo int  handle,
int  NumFields,
FIELD_DATA_t FieldData
 

Legge informazioni di uno o piu' campi di un DBF aperto.

handle deve essere un handle valido ricavato da una precedente chiamata alla OpenDatabaseFile(). Riempie il vettore di strutture FieldData con le informazioni sui campi di un database precedentemente aperto con OpenDatabaseFile. La struttura in input deve contenere i nomi dei campi di cui si vogliono le informazioni, e NumFields deve essere settato al numero di elementi riempiti di FieldData. Se NumFields vale 0, vengono ritornate tutte le informazioni sui campi e FieldData deve essere allocato opportunamente.

Parameters:
handle L'handle del database aperto
NumFields Numero di elementi del vettore FieldData oppure 0
FieldData Vettore di strutture con i nomi dei campi oppure vuoto (ma allocato, se NumFields e' 0)
Returns:
LPC_OK Informazioni ottenute

LPC_BAD_ARG handle non valido o puntatore NULL

LPC_BAD_FIELD campo non valido

Author:
Gianni Campanile

Stefano Guerrini

Andrea Sterbini

Date:
Gennaio 2006
Version:
1.0

int IsDBFHandle int  handle  ) 
 

Verifica se un handle è corretto.

handle deve essere un handle valido ricavato da una precedente chiamata alla OpenDatabaseFile(). Ritorna LPC_OK se l'handle e' valido.

Parameters:
handle L'handle del database aperto.
Returns:
LPC_OK handle valido

LPC_BAD_ARG handle non valido

Author:
Gianni Campanile

Stefano Guerrini

Andrea Sterbini

Date:
Gennaio 2006
Version:
1.0

int IsDBFOpen int  handle  ) 
 

Verifica se un DBF e' aperto.

handle deve essere un handle valido ricavato da una precedente chiamata alla OpenDatabaseFile().

Parameters:
handle L'handle del database aperto.
Returns:
LPC_BAD_ARG handle non valido

SHARED se il DBF e' aperto in modo shared

EXCLUSIVE se il DBF e' aperto in modo exclusive

Author:
Gianni Campanile

Stefano Guerrini

Andrea Sterbini

Date:
Gennaio 2006
Version:
1.0

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

Funzione di gestione dell'errore.

Scrive un codice di errore, la funzione chiamante e un messaggio di errore. Per adesso l'errore viene stampato su stderr.

Parameters:
ErrorCode Codice dell'errore
Func Funzione in cui viene trappato l'errore
Msg Messaggio di errore
Author:
Gianni Campanile

Stefano Guerrini

Andrea Sterbini

Date:
Gennaio 2006
Version:
1.0

int OpenDatabaseFile char *  Name,
int  Mode
 

Apre un DBF.

Name è una stringa NULL terminated e rappresenta il nome del file da aprire. Il nome deve rappresntare un database precedentemente creato. La lunghezza totale del nome viene troncata a DBF_NAME_LENGTH caratteri e viene aggiunta l'estensione ".dbf".

Il database deve essere stato precedentemente creato con la CreateDatabaseFile Una volta aperto il file può essere usato e poi chiuso con la CloseDatabaseFile().

Il flag Mode può valere SHARED o EXCLUSIVE. Nel secondo caso può essere aperto solo da un processo. Quando il file viene aperto, viene creato un file con lo stesso nome che inizia con DBF_OPEN_SHARE o con DBF_OPEN_EXCL e con estensione DBF_OPEN_EXT. Se il file è già creato, nel secondo caso viene ritornato errore LPC_ERR_EXCLUSIVE.

Il record corrente viene settato a 1, anche se non ci sono record nel DBF.

Parameters:
Name Nome del database file, stringa alfanumerica + '_' NULL terminated.
Mode Modalità di apertura: SHARED o EXCLUSIVE
Returns:
LPC_OK Database creato

LPC_BAD_ARG Nome DB nullo o non valido

LPC_FILE_ACCESS Errore di lettura file

LPC_NO_SPACE Massimo numero di DBF aperti

LPC_NO_MEMORY Errore di allocazione memoria

LPC_ERR_EXCLUSIVE Database gia' aperto in modo esclusivo

See also:
CreateDatabaseFile(), CloseDatabaseFile().
Author:
Gianni Campanile

Stefano Guerrini

Andrea Sterbini

Date:
Gennaio 2006
Version:
1.0


Generated on Thu Jan 26 12:56:39 2006 for LPC-Completo by  doxygen 1.4.6-NO