PB à toute heure et à tout moment. (à parcourir avec modération)

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 30-04-2013 07:40:19

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

[RESOLU] Return type any

Bonjour,

Est ce que quelqu'un a déjà utilisé le return type any et dans quel mesure gérer les sorties sans valeur?

J'ai codé la fonction SQL coalesce de la manière suivante pour une utilisation sur des string

Code: pb

global type f_coalesce from function_object
end type

forward prototypes
global function string f_coalesce (string as_tableau[])
end prototypes

global function string f_coalesce (string as_tableau[]);

long  ll_for = 1
long ll_nb

if isnull(as_tableau) thrn return ''

ll_nb = upperBound( as_tableau )
if ll_nb <1 then return ''
for ll_for = 1 to ll_nb
  if  not isnull(as_tableau[ll_for]) then  return as_tableau[ll_for]
next
 
return ''
end function


Je voudrais ouvrir les possibilités à tout type de données mais je ne vois pas comment remplacer les '' lors des return sans valeur ( i.e. quand le tableau est remplis de valeur null ou quand le tableau est lui même vide upperbound(aa_tableau) = 0 )

Quelqu'un aurait une idée?


J'ai pensé en dernier recours à passer en référence une variable any qui servirai de valeur retour et un return type integer pour gérer les erreurs

Code: pb

global type f_coalesce from function_object
end type

forward prototypes
global function integer f_coalesce (any aa_tableau[], ref any aa_retour)
end prototypes

global function integer f_coalesce (any aa_tableau[], ref any aa_retour);

long  ll_for = 1
long ll_nb

if isnull(aa_tableau) then return 0

ll_nb = upperBound( aa_tableau )
if ll_nb <1 then return 0
for ll_for = 1 to ll_nb
  if  not isnull(aa_tableau[ll_for]) then 
    aa_retour = aa_tableau[ll_for]
    return 1
  end if
next
 
return 0
end function


Edit : code=PB => code=pb (c'est case-sensitive)

Dernière modification par Van (02-05-2013 12:17:47)


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#2 30-04-2013 13:43:20

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

Re: [RESOLU] Return type any

Bonjour,

Tu peux tout simplement retourner NULL (en faisant un setnull sur une variable ANY au préalable).


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

Hors ligne

 

#3 02-05-2013 12:16:37

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: [RESOLU] Return type any

J'utilise jamais any c'est une première...pourquoi j'y ai pas pensé   

Bon après ce moment où je me suis senti con, j'ai testé et ça passe nickel.


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#4 02-05-2013 12:34:11

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

Re: [RESOLU] Return type any

Van a écrit:

J'utilise jamais any c'est une première...pourquoi j'y ai pas pensé   

Bon après ce moment où je me suis senti con, j'ai testé et ça passe nickel.

ça arrive à tout le monde, j'imagine ta tête :

http://img577.imageshack.us/img577/6791/pokerfacememeo.jpg


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

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22