procedure et passage de parametres + datas

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Patix
Messages : 102
Inscription : ven. 19/nov./2004 14:17

procedure et passage de parametres + datas

Message 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 :-)
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Patix
Messages : 102
Inscription : ven. 19/nov./2004 14:17

Message 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 :-)
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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 ;)
Patix
Messages : 102
Inscription : ven. 19/nov./2004 14:17

Message 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 ?
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Patix
Messages : 102
Inscription : ven. 19/nov./2004 14:17

Message par Patix »

Merci,

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

Maintenant je vais tester ....
Répondre