Page 1 sur 2

Procedure

Publié : mar. 27/avr./2010 16:56
par aliong
Rebonjour,
Voila j'ai fait plusieurs constat et ne sais comment compenser ces parties :
je souhaiterai par exemple que ma Procédure me retourne un mavar.Point ou de type structure, apparemment ça passe pas y a t'il une autre solution ? des function ?
sinon je ne peux pas appeler d'autre procédure dans une procédure ? comment rendre le code un minimum lisible et encapsulé ?

Merci

Aliong

Re: Procedure

Publié : mar. 27/avr./2010 17:03
par lepiaf31
aliong a écrit :R
sinon je ne peux pas appeler d'autre procédure dans une procédure ?
Eh bien si ^^ :

Code : Tout sélectionner

Procedure test1()
  Debug "premiere procedure"
EndProcedure

Procedure test2()
  test1() ;j'appelle la 1ere Procedure
EndProcedure

test2()
ou alors je n'ai peut-etre pas compris ton problème


Ensuite si tu veux renvoyer une variable structurée moi je fais comme ca:

Code : Tout sélectionner

Structure coordonnees
  x.l
  y.l
EndStructure

Procedure affecterCoordonnees(*variable.coordonnees, x, y)
  *variable\x = x
  *variable\y = y
EndProcedure

coord.coordonnees
affecterCoordonnees(@coord, 12, 10)
Debug coord\x
Debug coord\y

Re: Procedure

Publié : mar. 27/avr./2010 18:38
par aliong
super tu reponds bien a mes questions ! :p mais moi bizarrement il ne veut pas compiler ça :

Code : Tout sélectionner

Procedure positionFenetre(Handle.l)
  ptOrigine.Point
  GetClientRect_(Handle, Fenetre.RECT)
  ClientToScreen_(Handle, FenetreHG.POINT)
  ptOrigine\x = FenetreHG\x
  ptOrigine\y = FenetreHG\y
  ;on replace la fenetre au premier plan
  fenetreEnPremierPlan(Handle)
EndProcedure

Procedure fenetreEnPremierPlan(Handle.l)
  ShowWindow_(Handle,#SW_HIDE)
  ShowWindow_(Handle,#SW_MINIMIZE)
  ShowWindow_(Handle,#SW_RESTORE) 
EndProcedure
il me reponds "fenetreEnPremierPlan" n'est ni une fonction ni un tableau ni une macro ni une liste !
il parle de fonction ça existe en PB ?
dsl je suis vraiment un gros debutant en PB et j'ai peut être trop pris l'habitude de la POO
pour mon fameux ptOrigine je vais utilisé ta méthode. par contre est il possible sinon de déclarer une variable global et accessible a toutes les procédures ?

merci pour tes reponses ;)

Aliong

Re: Procedure

Publié : mar. 27/avr./2010 18:52
par lepiaf31
Quand PB te parle d'une fonction il parle en fait d'une procedure (ce n'est pas tout à fait la meme chose mais PB utilise ces deux termes de la même facon). La compilation ne marche pas car il faut placer ta procedure fenetreEnPremierPlan() AVANT ta procédure positionFenetre(), sinon PB ne "connait" pas encore fenetreEnPremierPlan() quand tu appelles positionFenetre().

Re: Procedure

Publié : mar. 27/avr./2010 18:58
par aliong
ok merci j'ai vraiment plus l'habitude du procédural !

Re: Procedure

Publié : mar. 27/avr./2010 19:00
par lepiaf31
de rien ;)

Re: Procedure

Publié : mar. 27/avr./2010 19:38
par Ar-S
Salut, tu peux aussi utiliser Declare taprocedure() qui te permettra de ne pas être obligé de tenir compte de l'ordre.

Re: Procedure

Publié : mar. 27/avr./2010 20:17
par lepiaf31
Ha oui j'avais oublié qu'on pouvait faire ca aussi.

Re: Procedure

Publié : mer. 28/avr./2010 19:32
par aliong
super merci bien! dernière petite question ! (sur les procédure :p )
la procédure peut elle retourner un tableau ? si oui comment svp ?
merci ;)
Aliong

Re: Procedure

Publié : mer. 28/avr./2010 20:12
par Backup
..................

Re: Procedure

Publié : mer. 28/avr./2010 20:54
par aliong
Merci M. Dobro !
j'en ai fini avec mes questions sur les procédures !
à bientôt bonne prog à toutes et tous ! :p

Re: Procedure

Publié : mer. 28/avr./2010 21:37
par nico
Dobro, Il y a pas un problème avec le tableau Dim titi(10,10), il n'existe pas en dehors de la procédure à moins de mettre Static devant.

Re: Procedure

Publié : mer. 28/avr./2010 21:58
par Backup
le code que j'ai posté marche parfaitement chez moi :)

aucun probleme !
je renvoie l'adresse du tableau interne a la procedure

et je cree un tableau a l'exterieur de la procedure
et c'est lui qui va recuperer les valeurs de l'autre

je n'ai aucune erreur en faisant comme ça
et tu peux tester .. :)

Re: Procedure

Publié : mer. 28/avr./2010 22:53
par aliong
sinon dans l'aide j'ai trouvé ça :

Code : Tout sélectionner

  Procedure fill(Array A.l(1), longueur)  ; Le 1 représente le nombre de dimensions du tableau
    For i = 0 To longueur
      A(i) = i
    Next i
  EndProcedure
  
  Dim A.l(10)
  fill(A(), 10)  ; Le tableau A() est passé en paramètre
  
  Debug A(5)
  Debug A(10)

Re: Procedure

Publié : jeu. 29/avr./2010 6:02
par Backup
rien a voir !

ta question etait :
la procédure peut elle retourner un tableau ? si oui comment svp ?
tu demande a sortir un tableau d'une procedure

là l'exemple de l'aide , c'est pour faire entrer un tableau dans une procedure
en le passant par les parametres !

c'est rien que moins que l'inverse de ta question :)