Page 1 sur 1

ON X GOSUB a,b,c,d,....

Publié : mar. 28/déc./2004 14:58
par Backup
ben oui je trouvais ça pratique les "on x gosub en GFA !!"

pour memo

x=1 ; va envoyer vers a
x=2 ; va envoyer vers b
x=3 ; va envoyer vers c
x=4 ; va envoyer vers d

Code : Tout sélectionner


; dans cet exemple une procedure au hasar va etre choisie !

x=rnd(3)+1
on x gosub a,b,c,d

:D

Publié : sam. 01/janv./2005 18:25
par Dr. Dri
bah euh solution possible...

Code : Tout sélectionner

dim fonctions(3)
fonctions(0) = a()
...
fonctions(3) = d()

...

x = random(3)
callfunctionfast( fonctions(x) )
Dri

Publié : sam. 01/janv./2005 19:39
par Backup
heu en pure basic !!
Resultat = CallFunctionFast(*PointeurFonction [,Parametre1 [, Parametre2...]])
Description

Appelle une fonction en librairie en utilisant son pointeur obtenu par IsFunction() ou par LibraryFunctionAddress().

oblige a l'enploi de IsFunction() et des pointeurs !

je crois que le X Gosub reste plus simple et plus clair .. :D

Publié : sam. 01/janv./2005 20:08
par Oliv

Code : Tout sélectionner

Select Random(3) + 1
  Case 1
    fonction 1()
  Case 2
    fonction 2()
  Case 3
    fonction 3()
  Case 4
    fonction 4()
endselect
Un peu plus lourd mais marche comme tu veux non ?

Publié : sam. 01/janv./2005 20:28
par Le Soldat Inconnu
oui, une simple condition if ou un select comme Oliv

Publié : sam. 01/janv./2005 21:48
par Dr. Dri
Dobro a écrit :heu en pure basic !!
Resultat = CallFunctionFast(*PointeurFonction [,Parametre1 [, Parametre2...]])
Description

Appelle une fonction en librairie en utilisant son pointeur obtenu par IsFunction() ou par LibraryFunctionAddress().

oblige a l'enploi de IsFunction() et des pointeurs !

je crois que le X Gosub reste plus simple et plus clair .. :D
Nan nan pas forcément...

Code : Tout sélectionner

procedure test()
  debug "dobro"
endprocedure

ptr = @test()

callfunctionfast(ptr)
Dri