Page 1 sur 1

procedure et passage de parametres + datas

Publié : jeu. 28/juil./2005 22:38
par Patix
Bonjour,

Je comprends pas tout ds le passage de parametre et déclaration de variables.

Voici un petit prog et j'aimerai voir s'afficher les variables mais voila j'ai du oublié qqchose :-o
*********************************************
Global vTexte.s

Procedure.s P_ESSAI(xToto.s)
MessageRequester("La variable toto est :",Str(xToto),#PB_MessageRequester_Ok)
EndProcedure

If OpenWindow(0,0,0,200,200,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Procedure - comprend pas tout") And CreateGadgetList(WindowID(0))

Restore ESSAIDATA
For H = 0 To 1
For V=0 To 0
Read vTexte
Select vTexte.s
Case 0
xID_ESSAI.s=vTexte
EndSelect
Next
MessageRequester("La variable vTexte est :",vTexte,#PB_MessageRequester_Ok)
MessageRequester("La variable xID_ESSAI est :",xID_ESSAI,#PB_MessageRequester_Ok)
p_ESSAI(xID_ESSAI)
Next



Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadgetID()
Case 1
MessageRequester("Info","Le bouton 1 a été pressé !",#PB_MessageRequester_Ok)
Case 2
MessageRequester("Info","Le bouton 2 a été pressé !",#PB_MessageRequester_Ok)
Case 3
MessageRequester("Info","Le bouton 3 a été pressé !",#PB_MessageRequester_Ok)
Case 17
MessageRequester("Info","Le bouton 17 a été pressé !",#PB_MessageRequester_Ok)

EndSelect
EndSelect
ForEver
EndIf

DataSection
ESSAIDATA:
Data.s "#ID_ESSAI","*"
Data.s "#ID_ESSAI2","*"
EndDataSection
************************************

Si quelqu'un peut m'expliquer je suis tout ouie :-)

Publié : ven. 29/juil./2005 8:36
par lionel_om
Si tu fais Debug Str(ch$), tu affiche l'adresse de ta chaine de caractère (c'est ce que tu fais dans ta fonction). A l'origine cette fonction est pour convertir un entier en chaine de caractère.

Ensuite su fais un Select ch$, puis un Case 0. or sur les chaîne de caractère ça ne fais rien (comparaison d'un entier avec une chiane de caractère).

Et tu met un for i = 0 to 0 (donc INUTILE!!!)
Je ne peux pas t'en dire plus, car je n'ai pas compris ce que ton prog était sensé faire.

Par contre la prochaine fois, essaye de mettre ton code entre les balises [ code][/code] :wink:

Publié : ven. 29/juil./2005 10:21
par Patix
Il est vrai que je me suis planté dans la lecture des datas :-(.

voici le prg corrigé

**************
Global vTexte.s

Procedure.s P_ESSAI(xToto.s)
MessageRequester("La variable toto est :",Str(xToto),#PB_MessageRequester_Ok)
EndProcedure

If OpenWindow(0,0,0,200,200,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Procedure - comprend pas tout") And CreateGadgetList(WindowID(0))

Restore ESSAIDATA
For H = 0 To 1
For V=0 To 0
Read vTexte
Select V
Case 0
xID_ESSAI.s=vTexte
EndSelect
Next
MessageRequester("La variable vTexte est :",vTexte,#PB_MessageRequester_Ok)
MessageRequester("La variable xID_ESSAI est :",xID_ESSAI,#PB_MessageRequester_Ok)
p_ESSAI(xID_ESSAI)
Next



Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadgetID()
Case 1
MessageRequester("Info","Le bouton 1 a été pressé !",#PB_MessageRequester_Ok)
Case 2
MessageRequester("Info","Le bouton 2 a été pressé !",#PB_MessageRequester_Ok)
Case 3
MessageRequester("Info","Le bouton 3 a été pressé !",#PB_MessageRequester_Ok)
Case 17
MessageRequester("Info","Le bouton 17 a été pressé !",#PB_MessageRequester_Ok)

EndSelect
EndSelect
ForEver
EndIf

DataSection
ESSAIDATA:
Data.s "#ID_ESSAI","*"
Data.s "#ID_ESSAI2","*"
EndDataSection
**********************

En fait j'essaie de faire passer une variable de type "#xxxxx"
de façon à créer des gadgets dans la procédure mais je n'y arrive pas.
Je ne vois pas ce que j'oublie :-o

Suis je plus précis dans ma demande ? ou bien je m'xprime encore mal :-)

Publié : ven. 29/juil./2005 10:28
par Dr. Dri
#xxx c'est une constante. Pour la transmettre, ne donne pas le nom. Une fois le programme compilé il n'est plus question de nom de variable mais plutôt d'adresses. Pour les constantes on ne conserve que les valeurs...
Quand tu poste du code met le entre des balises code...

Code : Tout sélectionner

[code]entre les balises ton code PB
[/code]

Dri ;)

Publié : ven. 29/juil./2005 10:36
par Patix
pfiou, réponse rapide :-)

Mais je ne comprends pas tout.

Code : Tout sélectionner

Global vTexte.s 

Enumeration
#uneconstante
#ID_ESSAI
#ID_ESSAI2
Endenumeration


Procedure.s P_ESSAI(xToto.s) 
MessageRequester("La variable toto est :",Str(xToto),#PB_MessageRequester_Ok) 
EndProcedure 

If OpenWindow(0,0,0,200,200,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Procedure - comprend pas tout") And CreateGadgetList(WindowID(0)) 

Restore ESSAIDATA 
For H = 0 To 1 
For V=0 To 0 
Read vTexte 
Select V 
Case 0 
xID_ESSAI.s=vTexte 
EndSelect 
Next 
MessageRequester("La variable vTexte est :",vTexte,#PB_MessageRequester_Ok) 
MessageRequester("La variable xID_ESSAI est :",xID_ESSAI,#PB_MessageRequester_Ok) 
p_ESSAI(xID_ESSAI) 
Next 



Repeat 
Select WaitWindowEvent() 
Case #PB_Event_CloseWindow 
End 
Case #PB_Event_Gadget 
Select EventGadgetID() 
Case 1 
MessageRequester("Info","Le bouton 1 a été pressé !",#PB_MessageRequester_Ok) 
Case 2 
MessageRequester("Info","Le bouton 2 a été pressé !",#PB_MessageRequester_Ok) 
Case 3 
MessageRequester("Info","Le bouton 3 a été pressé !",#PB_MessageRequester_Ok) 
Case 17 
MessageRequester("Info","Le bouton 17 a été pressé !",#PB_MessageRequester_Ok) 

EndSelect 
EndSelect 
ForEver 
EndIf 

DataSection 
ESSAIDATA: 
Data.s "#ID_ESSAI","*" 
Data.s "#ID_ESSAI2","*" 
EndDataSection 
Dans le cas du prog ci-dessus, si je créé une image dans ma procédure avec comme constante #ID_ESSAI2, comment je passe cette constante dans la procédure ?

Publié : ven. 29/juil./2005 10:40
par Dr. Dri
La constante est un entier long donc envoie un entier long...

Code : Tout sélectionner

DataSection
  essaidata:
  data.l #ID_Essai
  data.l #ID_Essai2
EndDataSection
apres je n'ai pas compris à quoi servent les étoiles...

Dri

Publié : ven. 29/juil./2005 10:56
par Patix
Merci,

les étoiles ne servent à rien. c ptêt parce que je plane un peu :-).

Maintenant je vais tester ....