Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Perte de valeur lors de la récupération d'un message

#1 22-08-2008 20:56:40

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

[RESOLU] Perte de valeur lors de la récupération d'un message

Bien le bonsoir !

Me voici confronté à un étrange problème que je ne parviens pas à résoudre.
Soient les structures suivantes :

Code: pb

global type str_xml from structure
...
  integer    action
..
end type

Code: pb

global type str_interop from structure
...
  integer    action
...
end type


Depuis une première fenêtre, je remplis la première structure comme et je l'envoie à la seconde fenêtre :

Code: pb

str_xml  lstr_xml
lstr_xml.action = ii_une_constante
messagebox('', string(lstr_xml.action)) // 5
OpenSheetWithParm(w_response_2, lstr_xml, guo_message.iw_frame,0,original!)


Et dans ma seconde fenêtre je récupère le message dans le open() event :

Code: pb

istr_interop = Message.PowerObjectParm
messagebox('', string(istr_interop.action)) // true


Je perds donc l'information entre mes deux fenêtres. La structure de réception est de type différent, mais le contenu est sommes toutes similaire. Dans mes deux structures l'ACTION est un INTEGER... Et pourtant dans ma seconde fenêtre il semblerait que ca agisse comme un booléan o_O

J'avoue ne rien comprendre, et vous ?

Dernière modification par Nyphel (25-08-2008 13:37:21)

Hors ligne

 

#2 22-08-2008 22:14:23

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5122
Pépites: 97,200
Banque: 2,147,483,647

Re: [RESOLU] Perte de valeur lors de la récupération d'un message

Salut, a priori, je suppose que le istr_interop de w_response est défini en str_interop. Donc tu essayes de récupérer un objet d'un type différent de celui envoyé... chez moi ça donne ça :

http://img181.imageshack.us/img181/7153/postgo9.png

je ne connais pas le contexte, mais éventuellement, tu peux faire ça :

Code: pb

str_xml lstr_xml
lstr_xml = Message.PowerObjectParm
istr_interop.action = lstr_xml.action


maintenant si tu ne connais pas d'avance l'objet envoyé, utilise ClassDefinition() avec un traitement par cas, ou passe par des objets plutôt que des structures et crée un ancêtre commun aux deux qui aura la propriété action...


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 22-08-2008 22:48:41

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: [RESOLU] Perte de valeur lors de la récupération d'un message

Bonsoir,

A vrai dire je reprends un code déjà existant, donc je ne vais pas pouvoir créer d'ancêtre commun ;). Moins je modifie le code, mieux c'est.

En fait j'ai une fenêtre de modification de compte qui utilise la structure str_interop dans son fonctionnement habituel : cette structure fournit les données qui vont pré-remplir les champs. Ce sont donc les données du compte avant modification.

Maintenant une nouvelle fenêtre de l'application lit un flux XML et stocke les données dans str_xml.
L'idée c'est de transmettre ces données à ma fenêtre de modification de compte pour pré-initialiser les champs avec les données XML, qui représentent un compte modifié. Logiquement je devrais utiliser une str_interop plutôt qu'une autre structure... Mais voilà, c'est déjà codé comme ça pour plusieurs fenêtres, et la str_xml contient donc toutes les données disponibles pour l'ensemble de ces fenêtres. Jusqu'à aujourd'hui il semble que ça fonctionnait plutôt bien, avec Pb 6.5 et 10.2

Moi j'ai du créer une nouvelle fenêtre, et suite à cela j'ai rajouté ce système de flux XML. J'ai immédiatement rencontré des petits soucis de typage lorsque je passais mes données d'une structure à l'autre, mais rien de grave... Jusqu'à ce que je fasse appel à ce type action déclaré en integer dans mes deux structures.

Bref je suis bien ennuyé.
D'un côté ça semble vraiment être une mauvaise idée d'essayer d'unifier ces 2 structures différentes, et d'un autre côté ça fonctionne sur les anciennes fenêtres de l'application :-/
Peut-être que le processus de migration de Pb 6.5 à Pb 10.2 à automatiquement géré ce problème... Quoi qu'il en soit j'en saurai plus lundi ;)

Merci pour ton aide !

Hors ligne

 

#4 25-08-2008 13:37:07

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: [RESOLU] Perte de valeur lors de la récupération d'un message

J'ai corrigé la chose en ne passant plus par une str_xml mais directement par une str_interop. Ca fonctionne correctement, ce qui confirme qu'il ne faut pas essayer de catser une structure en une autre

C'est tout de même étrange que Pb ne me dise rien quand je tente de le faire...

Merci pour le coup de main !

Hors ligne

 

#5 25-08-2008 14:41:01

Cortex  
Modérateur
Lieu: Arlon
Date d'inscription: 08-02-2008
Messages: 194
Pépites: 6,904
Banque: 2,109,818,425,070

Re: [RESOLU] Perte de valeur lors de la récupération d'un message

Nyphel a écrit:

C'est tout de même étrange que Pb ne me dise rien quand je tente de le faire...

Perso, je vois pas pourquoi c'est etrange...

Le PowerObjectParm renvoyant un powerObject, rien ne t'empeche si tu veux de mettre cette valeur dans une variable de type datawindow, nvo, transaction, ... Ou n'importe quoi qui herite de powerObject... Ca fait partie des trucs que le compilateur ne verifie pas, faut faire gaffe, c'est tout.

Hors ligne

 

#6 25-08-2008 16:33:15

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: [RESOLU] Perte de valeur lors de la récupération d'un message

Oui mais chez Erasorz il y a bien une erreur, alors que sur ma version il n'y a aucun problème : c'est juste que le comportement devient instable

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Perte de valeur lors de la récupération d'un message

Pied de page des forums

Propulsé par FluxBB 1.2.22