Shared ou Global, lequel choisir ???

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Nadine ozor !!! (Comme dirais mon copain d'origine cabile) :lol: ,
t'a méga raison, j'avais pas pensé aux variables ........

Je viens d'essayer avec ton code et evidement pas besoin de declarer en global puisque on passe pas dans une procedure, c'est tip top :P

Code : Tout sélectionner

 Enumeration 
  #Window 
EndEnumeration 
  
Enumeration 
  #ButtonGadget 
EndEnumeration 

  
If OpenWindow(#Window,0,0,400,400,"Pure Basic",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
  CreateGadgetList(WindowID(#Window)) 
  
  ButtonGadget(#ButtonGadget ,10,50,100,20,"titre") 
  
  ;La boucle Repeat-Until sert à la gestion des évènements    
  Repeat 
    EventID.l=WaitWindowEvent() ; on récupère un évènement 
    Select EventID              ; on sélectionne cet évènement 
      Case #PB_Event_Gadget      ; cet évènement concerne une action sur un Gadget 
        Select EventGadget()  ; dans ce cas, on récupère l'identifiant du gadget qui l'a créé 
          Case #ButtonGadget    ; on compare l'identifiant à  #ButtonGadget 
            ; si celui-ci correspond, on exécute les lignes ci-dessous 
            a.s = Chr(13) +  Chr(13) + "Malgres que je sois dans une subroutine la variable a.s"  +Chr(13) + "n'a pas changé de valeur sans etre globale !!!" + Chr(13) + Chr(13) + Space(30) + "MERCI DOBRO"
            Gosub sousprg_bouton 
            
        EndSelect 
    EndSelect 
  Until   EventID=#PB_Event_CloseWindow 
EndIf 

End ; TERMINE LE PRG 

sousprg_bouton: 
MessageRequester("appuis sur le bouton","quelqu'un a clique sur le bouton !!" + A,#PB_MessageRequester_Ok ) 
Return 
Comme quoi, je cherche a faire des codes compliqué et je ne sais meme pas les bases.Pffffttttt !!! :oops:

Je vais appliquer tout ça demain, au boulot. 8)

Tu va encore rire, mais j'ai toujours des blemes avec la gestion des evenements.
Je regrette toujours mon idée de squelette d'evenement.
C'est pas toujours evident de gerer tous les evenements possibles dans un prg sans s'y perdre. Y'en a tellement .....
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Nadine ozor !!! (Comme dirais mon copain d'origine kabyle) :lol: ,
t'a méga raison, j'avais pas pensé aux variables ........

Je viens d'essayer avec ton code et evidement pas besoin de declarer en global puisque on passe pas dans une procedure, c'est tip top :P

Code : Tout sélectionner

 Enumeration 
  #Window 
EndEnumeration 
  
Enumeration 
  #ButtonGadget 
EndEnumeration 

  
If OpenWindow(#Window,0,0,400,400,"Pure Basic",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
  CreateGadgetList(WindowID(#Window)) 
  
  ButtonGadget(#ButtonGadget ,10,50,100,20,"titre") 
  
  ;La boucle Repeat-Until sert à la gestion des évènements    
  Repeat 
    EventID.l=WaitWindowEvent() ; on récupère un évènement 
    Select EventID              ; on sélectionne cet évènement 
      Case #PB_Event_Gadget      ; cet évènement concerne une action sur un Gadget 
        Select EventGadget()  ; dans ce cas, on récupère l'identifiant du gadget qui l'a créé 
          Case #ButtonGadget    ; on compare l'identifiant à  #ButtonGadget 
            ; si celui-ci correspond, on exécute les lignes ci-dessous 
            a.s = Chr(13) +  Chr(13) + "Malgres que je sois dans une subroutine la variable a.s"  +Chr(13) + "n'a pas changé de valeur sans etre globale !!!" + Chr(13) + Chr(13) + Space(30) + "MERCI DOBRO"
            Gosub sousprg_bouton 
            
        EndSelect 
    EndSelect 
  Until   EventID=#PB_Event_CloseWindow 
EndIf 

End ; TERMINE LE PRG 

sousprg_bouton: 
MessageRequester("appuis sur le bouton","quelqu'un a clique sur le bouton !!" + A,#PB_MessageRequester_Ok ) 
Return 
Comme quoi, je cherche a faire des codes compliqué et je ne sais meme pas les bases.Pffffttttt !!! :oops:

Je vais appliquer tout ça demain, au boulot. 8)

En parlant de commencement, tu va rire, mais j'ai toujours des blemes avec la gestion des evenements.
Je regrette encore mon idée de squelette evenementiel.
Y'a tellement d'evenements different qu'au bout d'un moment c'est un vrai bordel dans mes codes.

J'arrive pas a faire une procedure par evenement comme en VB.
Simple clic gauche, droit, dble clic gauche droit, sur gadget, sur fenetre etc... y'a toujours un truc qui merde au bout d'un moment, l'autre jour j'ai encore perdu 1 journée pour un evenement lbutton a la place d'un pb_gadget.
C'est lamentable :oops:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Kwai chang caine a écrit : Je regrette toujours mon idée de squelette d'evenement.
C'est pas toujours evident de gerer tous les evenements possibles dans un prg sans s'y perdre. Y'en a tellement .....
c'est surtout qu'en programmation , il faut être partisan du moindre efforts
et donc , que ça ne sert a rien de vouloir gérer des événements qui ne serviront pas dans un programme !!

bref vouloir faire un squelette réunissant tout les évents , est une mauvaise idées , justement parce qu'il y en a beaucoup, et qu'un prg optimisé
ne gére pas des événements qu'il n'a pas besoin :D ...

a ce titre tu ne vas pas geré des multi fenetre alors que tu sais que ton prg
marchera avec une seule :D
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Ce que tu dis est vrai, mais le probleme, c'est que j'ai beaucoup de mal, a les classer et a savoir ou les ecrire dans la boucle repeat /select case/until.
Au debut ça va, mais des que l'on commence a faire des double clics et clic droit gadgets, c'est le bordel.... :?

C'est pourquoi une beau squelette complet avec une procedure par evenement, puis on rempli les procedures selon le code et ne reste plus qu'a supprimer les procedures inutilisées (si il en reste) pour eclaircir le code, mais au moins on est sur d'avoir programmé sous la meme forme entre chaque prg.
Mon bleme perso, c'est que je fais pas mal de petit prg qui se ressemblent et que j'essaye de faire evoluer en meme temps, j'ai du mal a m'y retrouver en sautant continuellement de l'un a l'autre.

Alors une bonne colonne nickel et qui marche tout le temps, c'est ce que j'aurais aimé avoir, car ces #{"'#¤ d'evenements ils sont vraiment pas simple a gerer.
Ce qui est dommage c'est que FRED n'ai pas pensé qu'un abruti comme moi, veuille faire un double clic ou clicdroit dans un stringadget ou viewgadget.... :roll:

Bon, j'essaierais un jour de me pencher sur le bleme, mais en attendant je patauge "in the semoule" :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre