Newsgroup: it.comp.lang.delphi
Titolo: gestione errori

salve a tutti
ho alcune difficoltà nella gestione degli errori
ad esempio per risolvee il problema di  un EDBEditError che si verifica se
si inserisse ad esempio
la data per metà che so "12/01/9_" oppure una data tipo "99/99/99"
credo che con queste poche righe riuscirei + o - a risolvere
try
data := VarToDate( Edit.Text);
except on EDBEditError do
       // messaggino
end;
il fatto è che non riesco a capire dove si scatena
cioè dove fare questo controllo? su che evento?
non riesco proprio ad acchiapparlo :(
colpa della mia pockissima esperienza
vi ringrazio tutti

cioè dove fare questo controllo? su che evento?
Nel tuo specifico caso verifica che all'uscita (OnExit) del dbedit la data
inserita sia valida.
Ti puo' aiuatare la funzione TryEncodeDate.
Nell'help cerca gli eventi del dbedit e la funzione sopracitata.
Ciao
-- 
Morde. (
mo...@despammed.com
)
M-List di icld: 
http://it.groups.yahoo.com/group/icld/
Firefox, il miglior browser: 
http://www.gxware.org/mozilla/

"apprendista" nel precedente post ha scritto:

io andrei a veder gli eventi del campo nel Dataset
invece di andare ad intercettare cosa succede sui
singoli DBEdit ... se usi i filed persistenti e magari
gli eventi OnValidate oppure OnChange potresti fare,
una sola volta e secondo me nel punto più appropriato,
il controllo di valore per tutti i DbEdit che sono
collegati a tale dataset e campo.
oppure se vuoi fare una cosa ancora più "venale" e
centralizzata, puoi mettere un componente
ApplicationEvent e utilizzare l'evento OnException dove
mettere un case per le varie eccezioni da gestire in
maniera centralizzata.
sono le prime cose che mi sono venute in mente.
 >vi ringrazio tutti
	Ciao
	MassimoB
 
---------------------------
http:\\
www.massimobeschi.it

 maniera centralizzata.
e questa mi sembra un'ottima soluzione.
ci ho provato ma ho notato che si riesco a gestire l'errore,
ma prima che ciò avvenga viene comunque visualizzato il messaggio che io
vorrei evitare,
come se non fossi realmente riuscita ad acchiapparlo anke se dopo
effettivamente entra nell'evento onExcepion e fa quello che deve fare
mi mankerà ankora qualkosa?
ho letto che cmq questi messaggi quando delphi è chiuso non vengono
visualizzati
? ma è giusto lasciarla così? a me non sembra molto corretto
addirittura non sapevo che si potessero disattivare i messaggi di errore :(
brrr mi vengono i brividi...
grazieeeee

grazieeeee


sto seguendo il consiglio di MassimoB
per la gestione degli errori
tutto bene però c'è un inghippo (naturalmente :P )
ad esempio
mi si verifica questa cosa
in caso di un EDBEditError faccio visualizzare un messaggio
e fin qui tutto bene
però
se chiudo questa finestra col click del mouse tutto bene
ma se la chiudo premendo Invio da tastiera
mi riapre lo stesso messaggio
evidentemente si scatena un evento
infatti io gestisco l'evento OnKeyUp del MaskEdit per altre cose
come posso risolvere  questa cosa?
non so se sono stata chiara :)
spero in un altro vostro aiutino grazie!!!!!!

non so se sono stata chiara :)
non ho capito molto bene ma forse sono io che oggi sto
fuso con questo caldo ... !!! :(


 spero in un altro vostro aiutino grazie!!!!!!
-- 
Ciao, Anto', [37, 143, AQ] 
MB C SC 220 CDI Magma Rot
"Di sempre cio' che senti e fai cio' che pensi."
    G.G. Màrquez


ehehee hai ragione Antò
infatti oggi analizzando ho capito che è proprio questo il punto
vi spiego
procedure TForm1.MaskEdit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
 bo : TMaskEdit;
begin
if key = 13 then
   MaskEdit2.SetFocus;
end;
ciò per permetter all'utente di spostarsi nell'altro campo maskedit2
facilmente con un invio
l'eccezione si verifica proprio mentre esco dalla maskedit1 credo
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
var
 bo: TMaskEdit;
begin
    if  e.ClassType = EDBEditError then
      ShowMessage('Inserire correttanente i dati');
end;
quando chiudo questo messaggio di errore tramite invio
setta il focus all'altra maskedit2 e quindi continua a darmi l'errore
perkè la data inserita è ankora sbagliata
allora ho cercato di aggiungere
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
var
 bo: TMaskEdit;
begin
    if  e.ClassType = EDBEditError then
    begin
      ShowMessage('Inserire correttanente i dati');
       if sender.ClassType = TMaskEdit then
       begin
          bo := TMaskEdit( sender );
          bo.Clear;
          bo.SetFocus;
       end;
    end;
end;
ora non lo fa + perkè ho ripulito la maskedit1
però setta il focus sull'altro la maskedit2 uffa !!!!!
SE HO SCRITTO FESSERIE ME LO DITE!!!!!!
ciao :(

ciao :(


ciao :(


anke se con ritardo
(causa altri problemi + urgenti da risolvere :P)
volevo ringraziare
per ora seguendo i vostri consigli sta andando bene se
avrò altri problemi mi rifarò viva (molto probabile)
ciao