Page 1 sur 1

Crash d'un prog sur EndProcedure ?

Publié : mer. 02/mars/2005 19:52
par Le Soldat Inconnu
Salut,

j'ai mon prog qui plante sur un EndProcedure 8O

j'ai mis un débug avant, il s'affiche bien, mais le debug après la procedure ne s'affiche pas
entre temps le programme à carrément planté.

Le projet est très gros et je veux pas le diffuser donc je ne mets pas de lien.
Fred, si tu le veux, je te l'envoie par mail.

j'ai testé tous mes programmes avec la 3.93. aucun problème donc je ne pense pas que ça vienne d'une de mes lib externe.
j'ai d'ailleurs commenté le contenu de la procedure (la partie exécutée de la procedure, elle contient des choix multiples dans un if elseif endif) et ça change rien. ça plante toujours

voilà, si vous avez une idée.

Publié : mer. 02/mars/2005 20:10
par Anonyme2
Ca me rappelle un plantage du à une structure non correcte (surtout en fin de procedure).

Regardes bien toutes les structures de ta procedure et vérifie
Fait un essai en ajoutant une dizaine de variables de type long ou plus (comme dernière variables) ou mets un debug à la fin juste avant le endprocedure et regarde si ça plante et dis-nous tout

Publié : mer. 02/mars/2005 20:39
par Le Soldat Inconnu
je cherche à réduire mon champ d'investigation, c'est déjà pas un prob de lib externe, je les ai toutes retirées.

ça plante à la fin de la procedure quand j'ai le test de ce type

Code : Tout sélectionner

If "truc" + Liste(choix) + ".ini" <> ancientruc
et si je mets ça, ça marche

Code : Tout sélectionner

txt.s = "truc" + Liste(choix) + ".ini"
If txt <> ancientruc

Publié : mer. 02/mars/2005 21:39
par Le Soldat Inconnu
bon, j'ai isolé le code qui plante

vous essayez de changer le contenu du combobox et normalement ça plante (du moins chez moi, ça plante sur 2 PC, XP pro PB3.93)

Code : Tout sélectionner

Global nbmenu.l, Ancien_Choix.s
Dim Liste_Menu.s(100)

Enumeration
  #Window
  #choixmenu
EndEnumeration

;- Procedure

Procedure Fenetre_Principale()
  If OpenWindow(#Window, 318, 222, 423, 50, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "PopupMenu Editeur")
    If CreateGadgetList(WindowID())
      ComboBoxGadget(#choixmenu, 1, 0, 200, 150)
    EndIf
  EndIf
EndProcedure

Procedure Charger_Menu()
    For n = 0 To 10
      AddGadgetItem(#choixmenu, -1, Str(n))
    Next
EndProcedure

Procedure ChoixMenu()
  choix = GetGadgetState(#choixmenu)
  If choix >= 0
    ; Txt.s = "PopupMenu\" + Liste_Menu(choix) + ".ini"
    ; If Txt <> Ancien_Choix
    If "PopupMenu\" + Liste_Menu(choix) + ".ini" <> Ancien_Choix
      Debug "menu"
    EndIf
  EndIf
EndProcedure

;- Debut du prog

Fenetre_Principale()

Charger_Menu()
ChoixMenu()

Repeat
  Event = WaitWindowEvent()
  
  If Event = #PB_EventGadget
    Select EventGadgetID()
      Case #choixmenu
        ChoixMenu()
    EndSelect
  EndIf
  
Until Event = #PB_EventCloseWindow


Publié : mer. 02/mars/2005 22:13
par Oliv
XP, ne plante pas sous 3.92 mais pla,nte sous 3.93

Publié : mer. 02/mars/2005 22:26
par cederavic
avec un CallDebugger apres Debug "menu" dans la proc, et en continuant en step by step, on s'aperçois que ça plante au niveau du Endif de If choix >= 0 ...

Publié : jeu. 03/mars/2005 0:44
par Flype

Code : Tout sélectionner

Global Memo.s

Memo = "test"

Dim Tableau.s(100)

For i=0 To 99
  Tableau(i)=Str(i)
Next

Procedure Proc() 
  
  If "a" + Tableau(1) + "c" <> Memo
    Debug "vrai"
  Else
    Debug "faux"
  EndIf 
  
EndProcedure

Debug "debut"
Proc()
Debug "fin"
c'est un vrai gros bug çà...
même en initialisant les variables en haut du source.

Code : Tout sélectionner

"a" + Tableau(1) + "c" <> Memo 
le problème il est là parce que comme çà çà passe

Code : Tout sélectionner

"a" + Tableau(1) <> Memo 

Publié : jeu. 03/mars/2005 13:04
par Fred
Effectivement, il a l'air plutot serieux. Je vais regarder ca rapidement.

Publié : jeu. 03/mars/2005 18:52
par Le Soldat Inconnu
Merci :)