Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2078 connectés 

  FORUM HardWare.fr
  Programmation

  [Delphi/COM+] Gestion des exceptions ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Delphi/COM+] Gestion des exceptions ...

n°60398
evode
Meuaarf !! ReZo !!!
Posté le 19-09-2001 à 16:39:36  profilanswer
 

Voala j'ai un compo activeX
J'ai dedans une gestion des exceptions assez detaillee qui marche bien
en fin non, elle marche po bien :/
 
A partir du moment ou j'instancie un compo COMTI (technologie micro$oft) je perds le detail de mes exceptions ...
 
Je m'explique :
avant :
   raise MonException.create;
===> je recupere MonException dans le prog appelant
 
apres COMTI
   raise MonException.create
===> je recuepere Exception:erreur inconnue
(ou un truc kom ca, je l'ai plus sous les yeux ... )
 
les exceptions sont tjs bien levee (heureusement :sweat: ) mais j'ai plus le detail :/
 
des idees ?


---------------
Hyndex - Meuaarf !! ReZo !!!
mood
Publicité
Posté le 19-09-2001 à 16:39:36  profilanswer
 

n°60414
Axelay
Fumeur de fraises & co...
Posté le 19-09-2001 à 17:36:11  profilanswer
 

Idee ?
Heu je sais po moi, change de boulot ?
Joue plus souvent a Quake III :)
 
Sinon bah nan, je vois po trop koi tu veux dire mon pOv gars !
C koi le COM TI ? Tu trouves ca ou ? balance, je materais des keu j'aurais le temps... Je me remets a donf dans les COM+ et DLL dans environ une a deux semaines :/
 
Suis hyper heureux :cry:
 
++


---------------
"Si vous avez perdu votre mot de passe : C bien fait Zavez ka pas etre bete" :)
n°60416
seblamb
Posté le 19-09-2001 à 17:39:18  profilanswer
 

Je pense que c'est à cause d'une limitation de la gestion des exceptions de Delphi.  
Delphi ne gere que les exceptions qui dérivent de la classe Exception, sinon il renvois que c'est un exception inconnue. Or en C++ ( langage dans laquelle ton ActiveX à du être develloppé) on peut renvoyer tout type d'exception ( entier, chaine de caractère....).
 
Ca reste un supposition, mais c'est un problème que j'ai déja rencontré.

n°60419
evode
Meuaarf !! ReZo !!!
Posté le 19-09-2001 à 17:40:26  profilanswer
 

pfffff ax' stp :lol:
 
bon alors poor les ignares ComTI est un solution cro$soft mermettant de genenerer des Com+ faisant le lien entre les appli win (appel du com) et les mainframes
Dans mon cas le ComTI a ete genenere a partir du code cobol(:sarcastic: ) d'une transaction sur IMS/MVS


---------------
Hyndex - Meuaarf !! ReZo !!!
n°60421
evode
Meuaarf !! ReZo !!!
Posté le 19-09-2001 à 17:44:28  profilanswer
 

le pb C ke mes exceptions ki marchent tres bien tout le long du process deraillent a partir du moment ou j'utilise le comti :??:
 
raise monException; <== ok
createcomobject(..le COMTI...)
raise monException  <== not ok
 
C lourd :/
 
sinon mon activeX est dvlp en Delphi et est utilise par une appli Delphi (test) ou des pages asp (prod)


---------------
Hyndex - Meuaarf !! ReZo !!!
n°60423
Axelay
Fumeur de fraises & co...
Posté le 19-09-2001 à 17:57:44  profilanswer
 

Et pkoi tu utilises les exceptions, moi mes programmes functiunnent toujours tres bien... Jamais d'erreurs :lol:
 
Vala, mais en gros, je peux te dire keu C le COM TI ky fout la merde, je vois toujours po a koi ca te sert...
Normalement ta po besoin de ca, tu fais juste un appel a ton COM Object dans ton appli et pouf ca roule...
 
En fait, d'apres ce keu je comprends, le COM TI est en fait le lien entre le COM et l'appli, donc si tu coupes les ponts (blague !) tu les crees toi-meme...
 
Atta
 
 
(Scritch scritch) <- cherchage de code :D
 
Ouais donc, kan tu crees tes COM Objects, y te genere des xxxxx_TLB.Pas
Bah ca tu les inclues dans ton appli et tu fais une reference a la creation...
 
Genre ta un fichier test_TLB.pas
Dans ton appli, dans les units tu ajouts test_TLB
et pis apres tu crees ton instance et c marre...
 
Tu bosses ensuite dessus directement kom si tu faisais liaison avec le COM
 
Vala, /me se casse, ++


---------------
"Si vous avez perdu votre mot de passe : C bien fait Zavez ka pas etre bete" :)
n°60429
evode
Meuaarf !! ReZo !!!
Posté le 19-09-2001 à 18:05:58  profilanswer
 

bon alors kom d'hab ils a rien compris le rosbeef :sarcastic:
 
sur le mainframe, il y a un pgr ki me fait un traitement et ke me retourne des trucs achement importants (genre c'est meme le but de l'appli ...)
le comti a partir du source du pgr genere un com+ qui va avoar une fonction qui lancera le pgr sur le mainframe
donc j'ai besoins du comti :sarcastic:
pis les exceptions ... je sais po komment vous pgrammez en engleterre mais moa je blinde mon code (surtout kan C poor poor un client comme le miens :sweat: )
 
sinon je le redis, C po le comti ki genere les exceptions !
C moa ki les lances


---------------
Hyndex - Meuaarf !! ReZo !!!
n°60568
Axelay
Fumeur de fraises & co...
Posté le 20-09-2001 à 10:24:21  profilanswer
 

T'avais ka pa faire du Delphi :D
 
Nan franchement et honnetement, mon cher Evode, ... je n'ai strictement rien compris a ce keu tu m'as dit... Disons keu en gros je comprends po koi keu ca devient clair maintenant...
 
Atta...
 
OK, et pkoi tu utilises le COM TI pour creer ton COM +...
First of all, pkoi tu le crees po toi-meme ton object ? C pourtant po dur... Alors heu...
Second, le COM Ti, y ti genere ti un code kekpart ? si oui, tu farfouines le code et zou ca parti
 
LOL !!!! [:kasumi]


---------------
"Si vous avez perdu votre mot de passe : C bien fait Zavez ka pas etre bete" :)
n°60580
evode
Meuaarf !! ReZo !!!
Posté le 20-09-2001 à 11:07:19  profilanswer
 

1) rester calme (ok)
2) exploser axelay a Q3 le soar sur le net (ok)
3) reexpliker a axelay (work in prodess)
4) rexploser axelay a Q3 (toDo)
 
Bon je reexplike
 
COMTI genere un com+ ke j'utilise dans mon com+ ke je developpe
...
 
bon C po grave, prenons le pb autrement :
j'ai besoins d'utiliser un com+ donne, mais des ke je l'instancie, je pers le detail de mes exceptions ...
 
si tu comprends tjs po ce k'est comti =>  http://www.microsoft.com/hiserver/techinfo/comti.asp


---------------
Hyndex - Meuaarf !! ReZo !!!
n°60615
JWhy
je peux plier (héhé)
Posté le 20-09-2001 à 13:32:54  profilanswer
 

Si j'ai bien compris (sinon, il va falloir que tu appliques les points (1) et (3) pour moi ;) ), t'as des objets delphi de base ( TMachin=class(TObject) ) et apres t'as des wrappers autour de ces objets pour présenter tes interfaces via COM ?
 
le pb c'est que quand tu raise un exception dans ton TMachin, ca va utiliser la méthode SafeCallException du TObject qui renvoit tout le temps l'exception E_UNEXPECTED.
 
Pour pouvoir récuperer les erreurs via l'interface, il faut que tu raise des EOleSysError (dans ComObj) et que tu overrides la méthode SafeCallException de ton TMachin et y mettre par exemple
function TMachin.SafeCallException(ExceptObject: TObject;  ExceptAddr: Pointer): HResult;
begin
  Result := Comobj.HandleSafeCallException(ExceptObject, ExceptAddr, StringToGUID(CreateClassID),'', '';);
end;
 
(si t'as les sources de Delphi, regarde le contenu de ComObj, ca explique un peu comment ca marche)
 
Je suis sur que je suis pas clair du tout... faut dire que ca fait plus d'un an et j'ai pas de mémoire :(
Pour plus d'info, regarde sur groups.google.com, c'est la que j'avais trouvé la solution a l'époque...

 

[edtdd]--Message édité par JWhy--[/edtdd]


---------------
www.alliancefrancophone.org ... Home is where the heart is
mood
Publicité
Posté le 20-09-2001 à 13:32:54  profilanswer
 

n°60621
evode
Meuaarf !! ReZo !!!
Posté le 20-09-2001 à 13:40:26  profilanswer
 

interressant ...
 
ca rejoint un peu l'idee de seblamb.
 
Mais si on part du principe ke c'est parce k'il fo ke je raise des EOleSysError, pkoa ca marche correctement avant l'emploie du comti et pas apres :??:
 
je vais rechercher sur groups.google.com
merci :)

 

[edtdd]--Message édité par evode--[/edtdd]


---------------
Hyndex - Meuaarf !! ReZo !!!
n°60630
evode
Meuaarf !! ReZo !!!
Posté le 20-09-2001 à 14:05:53  profilanswer
 

j'ai trouve http://groups.google.com/groups?hl [...] 1.deja.com
 
c'est ce truc la ke t'avais vu ?
 
j'ai po tout tout compris (Do you Speak English ?)
En tout cas la gars il vraiment toute la chaine d'exception (baleze)


---------------
Hyndex - Meuaarf !! ReZo !!!
n°61787
evode
Meuaarf !! ReZo !!!
Posté le 27-09-2001 à 11:40:59  profilanswer
 

Bon alors on avance :
Le passage des Exception a des EOleException nous amene non plus un 'Erreur Irremediable' mais 'OLE Error 80040108' (dans le cas d'un eoleexception avec un code erreur 264)
De plus mon eoleexception a un message 'Mon message d'erreur'
Le but, je le rappelle est d'arriver a le recuperer ...
 
Bon deja, petit environnement de test :
-un ActiveX serveur tout con ki avec une methode Launch qui se contente d'instancier le COMTI et qui lance aussitot apres une EOleException
-une appli PipoApp toute con qui cree mon activeX et qui lance Launch
 
Le probleme semble plus sournois ...
a)Si mon activeX est enregistre dans une appli COM+ : ca merde a donf (cf plus haut)
b)Si mon activeX n'est pas enregstre dans une appli COM+ (seulement recense donc) : ca merde a donf MAIS legerement differemment
 
Je m'explike
-En debuggage de PipoApp, avec a), le lancement de Launch me genere directement l'exception generique 'Ole Error 80040108'
-En debuggage de PipoApp, avec b), le lancement de launch me raise mon exception 'Mon message d'erreur' !!!!
:bounce: :bounce: ca marche ??
ET BEN NON !!!!! :fou:
Parce k'une deuxieme exception succede aussitot a cette premiere, cette exception est l'habituelle :gun: 'Ole Error 80040108'
 
:fou: :fou:
 
Delphi est t'il a remettre en cause ?
=> on prog un activeX et une appli de test en VB => meme comportement (en plus vb ne nous montre pas la permiere exception en cas b) mais directement la 'mauvaise';)
 
Derniere phase de tests => test directement sur le serveur (COMTI etait appele en DCOM)
sans rentrer dans les details : CA MARCHE !!!!
:fou: mais CA VA PAS, il est Imperatif ke ca marche en DCOM !!!
 
je sais po, je sais plus ... ca me gonfle ...


---------------
Hyndex - Meuaarf !! ReZo !!!
n°61812
seblamb
Posté le 27-09-2001 à 14:57:58  profilanswer
 

Dans 'List of Extended MAPI Numeric Result Codes'
On trouve  
 MAPI_E_INVALID_OBJECT  -> 80040108  
 
Je sais pas si ça a un rapport avec ton applis.

n°61816
evode
Meuaarf !! ReZo !!!
Posté le 27-09-2001 à 15:06:50  profilanswer
 

eu s'cuse, me suis mal exprime
le code erreur ke j'ai donne est un exemple, j'ai mis 80040108 poor un code erreur de 264 comme un pure exemple, bon ok j'ai merde, j'aurais du en donner un superieur a 512 (200 en hexa)
:jap:
Dans mes tests je donnais bien un code erreur libre (0200<x<ffff)
desole :jap:


---------------
Hyndex - Meuaarf !! ReZo !!!
n°61819
seblamb
Posté le 27-09-2001 à 15:18:01  profilanswer
 

Je connais le COM mais pas le COM+ donc je ne sais pas que c'est un 'activeX est enregistre dans une appli COM+'
Par contre vu que ça marche en local pas en reseau, es tu sur que la fonction de marshaling est activée. Parce que c'est un problème courant, un objet complexe pour voyager entre différent processus doit subir des modifications.

n°61829
evode
Meuaarf !! ReZo !!!
Posté le 27-09-2001 à 15:53:10  profilanswer
 

je ne peux pas verifier :/ (c'est chez le client et la je suis ailleur :sarcastic: )
 
neanmoins, je ne sais pas si c'est du au marshalling :
mon com+ est local, seul le COMTI est distant
et ce sont les exceptions de mon com (locales donc) qui sont erronnees
Enfin kan je dis ke mon com est local, c'est provisoire, dans l'environement de recette il sera en utilisation distante :/
 
(sinon par appli com+, j'entends telle kon les gere par le gestionnaire de composant -win2K- ou on ajoute des compo a une 'application COM+', de la on parametre par exemple les identifications, les roles (droits), chaines de construction ...)


---------------
Hyndex - Meuaarf !! ReZo !!!
n°61992
evode
Meuaarf !! ReZo !!!
Posté le 28-09-2001 à 12:24:56  profilanswer
 

je viens d'avoar la raison du probleme ...
 
Les stations de dvlp ke nous avions etaient sous w2K, mais po avec le sp2 :/
 
Avec ca marche parfaitement :/
 
ou comment perdre dans les 3jours et s'arracher les cheveux a cause de ...
 
(le premier ki me dit : "ben t'avais k'a correctement installer ta machine"
ben a celui la je lui reponds : "je bosse sur la machine k'on me donne, elle est pas a moa, ni a ma boite, j'ai po le droit de faire koa ke ce soat dessus !"
 
neanmoins, C vraiment trop CON :fou: comme erreur
le sp2 corrige en fait (et entre autre) un probleme avec les DCOM ...)
 
Donc voala, le probleme est resolu


---------------
Hyndex - Meuaarf !! ReZo !!!
n°61996
Axelay
Fumeur de fraises & co...
Posté le 28-09-2001 à 12:36:55  profilanswer
 

hmmmmm, tu vois kan tu veux :clap:
 
:)
 
Mais le probleme est assez interessant et va certainement pouvoir servir a de pauvres gens comme moi :/
 
Bravo a tous :)


---------------
"Si vous avez perdu votre mot de passe : C bien fait Zavez ka pas etre bete" :)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Delphi/COM+] Gestion des exceptions ...

 

Sujets relatifs
Débutant recherche aide (delphi)[C++] COM: comment obtenir une version texte d´un GUID???
[Delphi] enregistrer des lyrics dans un mp3Delphi: Besoin d'aide !
[DELPHI] simuler un click sur un menu d'une appliDelphi comment afficher juste afficher un petit icone dans la barre ?
[Delphi] Fichiers Avigestion d'evenement sous IE avec Javascript
Gestion de la sourie en assembleur[Delphi] TDBGrid et entete de colonnes sur plusieurs lignes...
Plus de sujets relatifs à : [Delphi/COM+] Gestion des exceptions ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR