136
Programmazione (Gambas 2) / Routine di controllo di validità della data
« il: 21 Marzo 2008, 09:32:02 »
Sto realizzando questa routine. Penso che in un software in cui vengono inseriti molti dati debba essere creato un sistema di controllo dei dati digitati. Vorrei saperne di piu' per realizzare una routine generale addìttabile..Veniamo alla data per quanto riguarda la data ho realizzato una routine per capire se una data è corretta, se l'anno è bisestile e se il mese è di 30 giorni. Il mio problema è creare un pattern di verifica del formato della data, che deve essere del tipo:
Questa è la funzione da replicare, mi manca parte iniziale ereg:
La funzione che controlla se un anno è bisestile:
la funzione di controllo del numero dei giorni:
Codice: [Seleziona]
dd/mm/yyyy
Questa è la funzione da replicare, mi manca parte iniziale ereg:
Codice: [Seleziona]
FUNCTION ControlloData($data){
If(!ereg("^[0-9]{2}/[0-9]{2}/[0-9]{4}$", $data)){
RETURN FALSE;
} ELSE {
$arrayData = explode("/", $data);
$Giorno = $arrayData[0];
$Mese = $arrayData[1];
$Anno = $arrayData[2];
If(!checkdate($Mese, $Giorno, $Anno)){
RETURN FALSE;
} ELSE {
RETURN TRUE;
}
}
}
La funzione che controlla se un anno è bisestile:
Codice: [Seleziona]
PRIVATE FUNCTION AnnoBisestile(iAnno AS Integer) AS Boolean
DIM risultato AS Boolean
IF (iAnno MOD 4) = 0 THEN risultato = TRUE
RETURN risultato
END
la funzione di controllo del numero dei giorni:
Codice: [Seleziona]
PRIVATE FUNCTION NumeroGiorniDelMese(iMM AS Integer, iYYYY AS Integer) AS Integer
DIM risultato AS Integer
IF iMM = 1 THEN risultato = 31
IF iMM = 3 THEN risultato = 31
IF iMM = 5 THEN risultato = 31
IF iMM = 7 THEN risultato = 31
IF iMM = 8 THEN risultato = 31
IF iMM = 10 THEN risultato = 31
IF iMM = 12 THEN risultato = 31
IF iMM = 2 AND AnnoBisestile(iYYYY) = FALSE THEN risultato = 28
IF iMM = 2 AND AnnoBisestile(iYYYY) = TRUE THEN risultato = 29
IF iMM = 4 THEN risultato = 30
IF iMM = 6 THEN risultato = 30
IF iMM = 9 THEN risultato = 30
IF iMM = 11 THEN risultato = 30
RETURN risultato
END