Procedure

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
aliong
Messages : 44
Inscription : lun. 12/avr./2010 22:17

Procedure

Message 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
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Procedure

Message 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
aliong
Messages : 44
Inscription : lun. 12/avr./2010 22:17

Re: Procedure

Message 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
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Procedure

Message 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().
aliong
Messages : 44
Inscription : lun. 12/avr./2010 22:17

Re: Procedure

Message par aliong »

ok merci j'ai vraiment plus l'habitude du procédural !
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Procedure

Message par lepiaf31 »

de rien ;)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Procedure

Message par Ar-S »

Salut, tu peux aussi utiliser Declare taprocedure() qui te permettra de ne pas être obligé de tenir compte de l'ordre.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Procedure

Message par lepiaf31 »

Ha oui j'avais oublié qu'on pouvait faire ca aussi.
aliong
Messages : 44
Inscription : lun. 12/avr./2010 22:17

Re: Procedure

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Procedure

Message par Backup »

..................
Dernière modification par Backup le sam. 19/mars/2011 17:46, modifié 1 fois.
aliong
Messages : 44
Inscription : lun. 12/avr./2010 22:17

Re: Procedure

Message par aliong »

Merci M. Dobro !
j'en ai fini avec mes questions sur les procédures !
à bientôt bonne prog à toutes et tous ! :p
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Procedure

Message 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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Procedure

Message 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 .. :)
aliong
Messages : 44
Inscription : lun. 12/avr./2010 22:17

Re: Procedure

Message 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)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Procedure

Message 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 :)
Répondre