#1 Fri 07 January 2011 14:29
- gussoner
- Participant actif
- Date d'inscription: 29 Jan 2006
- Messages: 128
[MapBasic]Appeler une fonction avec un argument
Bonjour à tous,
Avant tout meilleurs voeux pour 2011. Pour bien commencer cette année, je me suis lancé dans le développement d'un MBX mais je butte sur un problème de syntaxe. Je n'arrive pas à appeler une fonction en y passant un argument. voila mon code
Code:
Sub RecupListe (IdList as SmallInt) ..... blablabla ...... End Sub Call RecupListe (8)
Mapbasic ne veut pas me compiler ca. Le message d'erreur est le suivant :
Found [8] while searching for [An identifier]
je n'arrive pas à comprendre. Par avance merci pour votre aide
Hors ligne
#2 Fri 07 January 2011 15:08
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: [MapBasic]Appeler une fonction avec un argument
Je crois qu'il faut passez plutôt comme ceci
Code:
declare function RecupListe(byval IdList as SmallInt) as string ' avant la sub main dim Slist as string function RecupListe(byval IdList as SmallInt) 'Declare la fonction ..... blablabla ...... end function Slist = RecupListe(8) ' Active la fonciton
On ne fait pas de Call pour une fonction..seulement pour une procédure. De plus un fonction renvoie toujours une valeur donc il faut l'ajouter dans une variable telle que Slist
Dernière modification par jean94 (Fri 07 January 2011 15:10)
Hors ligne
#3 Fri 07 January 2011 17:12
- gussoner
- Participant actif
- Date d'inscription: 29 Jan 2006
- Messages: 128
Re: [MapBasic]Appeler une fonction avec un argument
Bonjour Jean,
merci pour ta réponse. Effectivement, je ne faisais pas la différence entre fonction et procédure.. C'est d'ailleurs pour ca que je n'arrivais pas à recupérer une valeur en retour !
Il y a juste une chose que je ne comprends pas dans ton code : a quoi correspond byval ?
Ce code la n'est pas correct ?
Code:
declare function RecupListe(IdList as SmallInt) as string ' avant la sub main
Hors ligne
#4 Fri 07 January 2011 17:38
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: [MapBasic]Appeler une fonction avec un argument
Bonjour,
Il y a de l'information à ce sujet dans le Map Basic USER guide,
Il y a deux façons de passer une variable soit par référence soit par valeur (byval). Pour passer par référence il faut que ce soit absolument une procédure.
ByVal veut dire passer une variable By Value et peut être une variable. Le datatype de cette variable n'est pas important car elle sera transformer tel que declaré dans la fonction.
Pour le code il n'est pas correcte. Il y a l'alternative de passer par une procédure et passer la variable par référence
Code:
Declare Sub RecupListe(IdList as SmallInt) Sub RecupListe(IdList as SmallInt) ..... blablabla ...... End Sub dim Sintid as smallint Sintid = 8 call RecupListe(Sintid)
Dans ce cas ton IdList sera égale à 8.
J'espère être claire
JF
Dernière modification par jean94 (Fri 07 January 2011 17:43)
Hors ligne
#5 Fri 07 January 2011 17:48
- gussoner
- Participant actif
- Date d'inscription: 29 Jan 2006
- Messages: 128
Re: [MapBasic]Appeler une fonction avec un argument
Oui oui c'est très clair, merci pour ces explications
Hors ligne