Le try...except travaille t-il toujours bien [Résolu]

Signaler
Messages postés
75
Date d'inscription
samedi 28 juin 2008
Statut
Membre
Dernière intervention
16 août 2011
-
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
-
Salut!
Je me pose toujours la question de savoir pourquoi ce message d'erreur en rouge apparait-il. J'ai mis le try...except. Pas toujours de resultat. Que faire?



project luna_rhumanos.exe raised exception class EVariantTypeCastError with message 'Could not convert variant of type <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>







(Null) into type (String)'. Process stopped. USe Step or Run to continue.







 






begin






 







 
try







  ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.Filter:='nome_completoanexo=' +quotedstr(nomeconscolocacoes.Text);






  ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.Filtered:= true;






  if not ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.IsEmpty then begin






  end else






  showMessage('Pedido não encontrado');






 







  categoriaOccupLancam.Text:= ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.FieldValues['categoria_occup_colocactuais'];






  ndespachoLancam.Text:= ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.FieldValues['ndespacho_colocactuais'];






except







end;
end;

LunaSoft

9 réponses

Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Tout simplement parce que Delphi t'informe quand-même des messages d'exception. Il suffit de lancer ton application sans Delphi, ou bien décocher une option (j'ai oublié laquelle) dans les options de compilation.

Cordialement, Bacterius !
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
34
C'est parce que tu utilise des identifiants d'objet trop long.

"ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz"

<hr size="2" width="100%" />
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
bonjour,
(Null) into type (String)
On peut supposer que tu essaie de faire quelque chose avec un variant
de valeur nulle (peut-être même initialisée à Null)
ce qui n'est pas possible..

vie le try except; mets un point d'arrêt et dis nous sur quelle ligne ça plante.
car

..et mets le code complet

cantador
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
désolé..
c'est :

vire le try except !
tu le remettras éventuellement après..

cantador
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
@f0xi : je crois me souvenir que la limite pour les variables ou les types est de 63 caractères (ou 64) non ?
Sinon il faudrait que Lunasoft réponde (ayant validé ma solution, qui n'est probablement pas la bonne vu les commentaires de Cantador et f0xi), pour voir un peu ce qui est bon.

Cordialement, Bacterius !
Messages postés
75
Date d'inscription
samedi 28 juin 2008
Statut
Membre
Dernière intervention
16 août 2011

Merci a Tous!

Le probleme ne pas sur les identifiants d'object trop long.
Les codes qui ont mis ici sont très exactement ceux qui me posent problème.
Je reconnais une chose: lorsque je fais une recherche et que le message "pas trouvé" apparait. Juste après avoir cliqué sur le "ok" de mon message. Le fameux message d'erreur s'affiche. J'ai constaté qu'il vient lorsqu'il ne rencontre pas la (ou les données) demandé(es).
Curieusement, lorsque j'omets de mettre ces codes
if not ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.IsEmpty then begin

end else

  showMessage('Pedido não encontrado');

le dit message n'apparait jamais même s'il ne rencontre pas les données demandées

LunaSoft
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
Merci de mettre le code complet afin de voir quelles sont les types de variables déclarées.
il s'agit vraisemeblablement d'un souci de conversion qui ne passe pas..

cantador
Messages postés
75
Date d'inscription
samedi 28 juin 2008
Statut
Membre
Dernière intervention
16 août 2011

voici tous les codes. Rien de grand...juste ce morceau:

if not ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.IsEmpty then begin

end else  showMessage('Pedido não encontrado');

nom.Text:= ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.FieldbyName(nome).AssTring;

prenom:= ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.FieldbyName(prenom).AssTring;

Merci,

LunaSoft
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
Comme tu n'as pas mis le code complet, on va jouer aux devinettes :

Déjà pourquoi ne pas écrire :

if ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.IsEmpty then
begin
  showMessage('Pedido não encontrado');
  exit;
end;
nom.Text:= ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.FieldbyName(nome).AssTring;
prenom:= ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.FieldbyName(prenom).AssTring;

Comme on ne connait les propriétés de truc machin :
ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz
on ne peut pas faire grand chose...

tu peux tenter ça aussi :
if (ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.Bof) and
(ColocAct_ColocAnt_FormAcademRealiz_CursosProfRealiz.Eof) then
begin
---

cantador