banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#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 wink

Hors ligne

 

Pied de page des forums

Powered by FluxBB