Delphi 4 : pb avec les exceptions !

Fermé
php - 13 oct. 2001 à 22:02
 nabzone - 18 oct. 2001 à 17:45
Slt à tous,

Après avoir résolu mes problèmes de barre d'outils dynamique, je me heurte à un nouveau problème lié aux exceptions.

J'ai un champ (TDBEdit) de type date relié à une base de données.
Hors lorsque j'entre une date invalide Delphi provoque une exception. Normal ...
Mais j'aimerais personnaliser le message d'erreur donc prendre la main avant la VCL.
Comment faire ?

Merci

Philippe
A voir également:

3 réponses

try
// ton code ou application.processmessages
except
on E:Exception do showmessage (' date pas bonne!!! ')
end;
0
Slt Nabzone,

Je le place où ce code ??

Parce que je ne sais pas à quel niveau Delphi génère cette exception.

En + le pb c'est que je n'appelle aucun code, ce serait plutôt l'inverse , Delphi qui appelle mon code via les évenements entres autres et donc c'est lui qui à la main.

@+
Philippe
0
peux tu me décrire de maniére trés présice le type de connexion que tu utilises (BDE, ..) ainsi que les composants (TDBEdit,Tdatasource,CLX dbexpress...) .

ce sera plus simple pour te donner une réponse claire
au fait l'exception qui est levée est-elle de type EconvertError ?


@+
A.N
0
Voici les éléments de mon application (simplifié à l'extrême)

J'utilise Delphi 4 SP2 et BDE pour accès à une base interne Paradox.

J'ai un TDataModule.
A l'intérieur j'ai un TTable relié à ma table de type Paradox que j'ai créé avec le module de base de données livré avec Delphi.
Dans ce TTable j'ai ajouter des champs persistants de type TField : un pour chaque champ.
Parmi ces champs j'ai donc un champ qui contient une date représenté par un objet TFieldDate.
Propriété du TFieldDate :
EDitMask : !99/99/00;1;_
FieldKind : fkData

Bien ...

Ensuite j'ai une fiche TForm toute bête avec à l'intérieur un TDataSource relié à mon TTable du TDataModule que j'ai déclaré dans la clause uses de l'implementation.
Le TDataSource est autoedit.

A l'intérieur j'ai 2 autres contrôles :
1 bouton standard TButton et 1 objet TDBEdit relié à mon TDataSource et à mon champ date de ma table.
Le code de mon bouton fait uniquement un post.
Il n'y a aucun code associé à mon TDBEdit.

L'exception est bien en effet de type EconvertError lorsque j'entre pas exemple 40/01/01

Ensuite j'ai le message classique de Delphi : celui que j'aimerais personnaliser donc.
Cela dit si ce n'est pas possible je ne vais pas en mourrir ... :)

Encore merci

@+
Philippe
0
j'ai fais quelques tests et .. je n'ai pas reussit à prendre à la main pour remplacer le msg 'xxx-xxx' is not a valid date and time

mais voici une solution pour contouner le probléme :

tu peux créer une procédure qui va executer du sql (INSERT ou UPDATE) en récupérant les informations dont tu as besoin .. en particulier la date.

ainsi tu pourras gérer toi méme les messages d'erreur

try
//ton sql (INSERT ou UPDATE)

except
on E:EDBEngineError do showmessage ('les informations ne sont pas correctes')

end;
0