Après windows pour les nuls, voici PB pour les bons (ou presque).

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.

#1 20-09-2011 15:47:49

walter  
Membre
Date d'inscription: 20-09-2011
Messages: 4
Pépites: 19
Banque: 0

[RESOLU] Caster un any en string array

Bonjour,

J'utilise un objet global qui permet de passer des paramètres sous forme de any entre les écrans.
Style nvo_param, c'est assez pratique...
Seulement voilà : je dois à présent passer un tableau à 2 dimensions, et là, j'ai un problème pour reconvertir de any vers l'array string[].

Dans le code ci-dessous, unefonction de mon nvo_param me permet de récupérer un des paramètres, sur base des clés "paramètres" et "tab_result" qui forment une sorte d'identifiant.
L'argument la_result est passé en référence, et reçoit théoriquement le any à reconvertir en string[].
Si je teste le datatype de la_result après la fct, on a bien du string.

C'est au moment de la reconversion vers un tableau que ça plante : Any expected etc.

Code: pb

lvo_param.of_getparam(la_result, "paramètres", "tab_result")
ls_dummy[] =la_result    //<-- runtimeerror "Any expected..."


Cela parait bien simple pourtant...

Auriez-vous quelque idée ???

Merci d'avance !

Dernière modification par walter (21-09-2011 18:24:34)

Hors ligne

 

#2 20-09-2011 18:08:07

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

Re: [RESOLU] Caster un any en string array

Salut, comment as-tu déclaré ls_dummy et la_result ?


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

Hors ligne

 

#3 20-09-2011 18:29:53

walter  
Membre
Date d'inscription: 20-09-2011
Messages: 4
Pépites: 19
Banque: 0

Re: [RESOLU] Caster un any en string array

Bonsoir,

Code: pb

string ls_dummy[]
any la_result


Une piste à ce niveau ?

De mon côté, je commence à soupçonner un traitement inadapté dans la fonction of_getparam...
Ou dans son binome of_setparam... style écrasement du tableau par un pur string...

Merci !

Hors ligne

 

#4 21-09-2011 07:30:50

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

Re: [RESOLU] Caster un any en string array

bah il manque un indice dans ton affectation :

Code: pb

ls_dummy[1] =la_result

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

Hors ligne

 

#5 21-09-2011 08:50:04

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Caster un any en string array

erasorz a écrit:

bah il manque un indice dans ton affectation :

Code: pb

ls_dummy[1] =la_result

non, je crois comprendre qu'il cherche a récupérer le tableau complet via le ANY, ce qui fonctionne, je l'utilise aussi.
je conseillerais de tester l'appel de fonction of_getparam en debug pas à pas et espionner les différentes variables...


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#6 21-09-2011 08:52:11

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

Re: [RESOLU] Caster un any en string array

xlat a écrit:

non, je crois comprendre qu'il cherche a récupérer le tableau complet via le ANY, ce qui fonctionne, je l'utilise aussi.
je conseillerais de tester l'appel de fonction of_getparam en debug pas à pas et espionner les différentes variables...

ok à ce moment là il faut déclarer la_result en tableau  :

Code: pb

string ls_dummy[]
any la_result[]

et faire tout simplement

Code: pb

ls_dummy =la_result

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

Hors ligne

 

#7 21-09-2011 09:52:03

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Caster un any en string array

mais c'est pas obligé, tu peux stocker un tableau dans un any scalaire :

exemple issue de la documentation :

PowerBuilder Help a écrit:

Syntax for data in a single row or all rows

This example assigns all the data in dw_1 to the Any variable la_dwdata. The value assigned to la_dwdata is an array of data structures whose members match the column datatypes:

any la_dwdata

la_dwdata = dw_1.Object.Data

This example assigns all the data in the delete buffer for dw_1 to the Any variable la_dwdata:

any la_dwdata

la_dwdata = dw_1.Object.Data.Delete


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#8 21-09-2011 09:55:48

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

Re: [RESOLU] Caster un any en string array

xlat a écrit:

mais c'est pas obligé, tu peux stocker un tableau dans un any scalaire

ah ok, j'ignorais cela

donc l'erreur peut provenir du fait que le tableau contient autre-chose que des strings (?)


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

Hors ligne

 

#9 21-09-2011 10:12:33

walter  
Membre
Date d'inscription: 20-09-2011
Messages: 4
Pépites: 19
Banque: 0

Re: [RESOLU] Caster un any en string array

Bonjour,

En effet, l'objectif est de reprendre l'entièreté du tableau (2 dimensions) dans un any.
Puis, de le transférer - en tant que Any - vers un objet "client".

Rester en Any nous permet de tranquillement gérer tous les datatypes.
Cela fonctionne bien avec les classiques string, long, decimal etc.
mais dès qu'on passe un tableau ça glisse...

J'ai débugué et entré des string à la main dans ce tableau.
On voit bien que le any est passé, avec les strings encodés jusque l'objet demandeur (donc dans la variable la_any )
Mais lorsque je veux repasser les valeurs dans la  variable tableau récepteur (la variable ls_dummy[]), badaboum...

Pour contourner, j'ai essayé avec un userobject possédant une structure.
Mais je rencontre le même type de problème.

J'avais pourtant -me semble-t-il - déjà vu passer des dw, des objects et autres de cette façon.
J'étais convaincu que ça marchait nickel... mais là, je rame...

Pour précision : PB11.5, win XP.

Merci d'avance pour toute piste...

Dernière modification par walter (21-09-2011 10:14:11)

Hors ligne

 

#10 21-09-2011 12:15:53

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Caster un any en string array

Bonjour,

Si, j'ai bien compris tu as en retour un tableau any 2 dimensions que tu veux transférer dans un tableau de type string en 2 dimensions :

Code: pb

string ls_array[100,100]
string ls_one1d[]

ls_array = la_result
ls_one1d = la_result // Transformation tableau 2D vers 1D


Par contre en 2 dimensions, tu ne peux pas utiliser l'allocation dynamique. tu dois définir une taille au tableau (par exemple l'indice maximum que tu pense ne jamais dépasser avec ton type any).

Hors ligne

 

#11 21-09-2011 18:23:42

walter  
Membre
Date d'inscription: 20-09-2011
Messages: 4
Pépites: 19
Banque: 0

Re: [RESOLU] Caster un any en string array

Bonsoir !

Merci pour votre aide.
J'ai découvert que l'objet gérant le transfert lvo_param ne gérait pas les tableaux.
Un tableau de strings était systématiquement transformé en string pur (détermination du datatype par className -> un tableau de string ou un string donne le même résultat mais la suite du traitement est valable pour les string uniquement).

Par contre, j'ai pu l'adapter pour qu'il accepte des any, dans lesquels on peut faire passer des objets utilisateurs.
Je passe donc mes données via un userobject qui a une structure où stocker mes données et les fonctions nécessaires à leur exploitation.
Cela marche nickel à présent !

Merci à tous !

Bonne soirée !

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22