Page 1 sur 1

[V4] Bizarre, vous avez dit bizarre, comme c'est bizarre...

Publié : lun. 26/juin/2006 12:22
par Jacobus
Le code suivant permet qu'un gadget ne soit pas initialisé/dessiné et fonctionne quand même, aucun message du deboggeur.
Je trouve que ça craint surtout quand tu te retrouves avec plusieurs milliers de lignes de code et que tu préfères dessiner tes gadgets après...
Ca m'est arrivé ce matin et je me suis étonné de ce fait. 8O
La soluce est simple, dessiner le gadget en premier, mais tout de même...

Code : Tout sélectionner

Enumeration
  #WIN
  #BTN_ABOUT
EndEnumeration
#PROGNAME = "TEST"
FlagWin = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered |#PB_Window_TitleBar

  If OpenWindow(#WIN,0,0,300,150,#PROGNAME ,FlagWin)=0 Or CreateGadgetList(WindowID(#WIN))=0 
  End 
  EndIf 
  
  ;PAS DE GADGET INITIALISE !!!
  
   Repeat 
    Event = WaitWindowEvent() 
    If Event = #PB_Event_Gadget 
      Select EventGadget() 
      
         Case #BTN_ABOUT 
           MessageRequester("BUG","Il y a comme un problème, non?",#MB_ICONEXCLAMATION) 
                      
      EndSelect 
    EndIf 
     
  Until Event = #PB_Event_CloseWindow 
  End 
MYSTERE :
Autre truc etonnant, et encore plus...
j'utilise plusieurs structures dans un code sous la forme suivante :

Code : Tout sélectionner

Structure Struc_test
  Nom.s 
  Prenom.s 
  Date.s
EndStructure 
Global NewList ITEMS.Struc_test()

Procedure.b CLEAR_ITEMS()
 ClearList(ITEMS())
  ProcedureReturn 1 
EndProcedure
Quelle ne fut pas ma surprise après plusieurs compiles de me retrouver avec ça ! J'ai dû chercher un moment!

Code : Tout sélectionner

Structure Struc_test
  Nom.s 
  Prenom.s 
  Date.s
EndStructure 
Global NewList ITEMS.Struc_test()

  ClearList(ITEMS()) <------ SORTIE DE LA PROC!!!
Procedure.b CLEAR_ITEMS()
  ProcedureReturn 1 
EndProcedure
J'ai rien compris, l'éditeur m'avait sorti mes clearlist() de chaque procedure, sans rien dire... Un truc de Ouf! 8O

Publié : lun. 26/juin/2006 12:46
par flaith
pour le permier cas, je n'ai aucun bouton qui s'affiche, donc c'est zarb' ton truc, idem pour le second cas, après +sieurs essais de compilo, rien n'a bougé.
T'as un poltergeist dans ton micro ? :D

Publié : lun. 26/juin/2006 13:54
par Jacobus
:) Oui dans le premier cas le bouton n'est pas dessiné, c'est donc normal de pas le voir. Ce qui est anormal à mon avis c'est que la compile se fasse sans alerte du deboggeur.
On devrait obtenir le message du genre " #BTN_ABOUT, gadget non initialisé" enfin il me semble.

Pour le reste c'est sûr que c'est plutôt Zarbi :lol: , mais là je vois pas d'où cela vient. Ca reste un grand mystère.
Une IA Poltergeist dans PB ? ouais, peut-être :lol:

Publié : lun. 26/juin/2006 16:28
par Gillou
A mon avis, il ya une toute nouvelle fonction dans pb 4. Dès qu'elle détecte dans un ordi le mot 'jacobus', ... déclage des clearlist

et pour le premier cas, c vrai que c une bonne idée mais bon ça permet tout de meme de tester un code meme si il est pas fini graphiquement, non?

Publié : lun. 26/juin/2006 16:47
par Jacobus
Ouaip, n'empêche que cela aurait été bien de le savoir qu'une appli peut être compilée sans les gadgets. le genre d'exemple à mettre dans la doc.

Je vais piéger quelques fichiers histoire de chopper ce modificateur de codes in PB4 :lol: