Problème avec un thread
Publié : sam. 22/août/2015 16:16
Bonjour à tous, j'essaie de me faire un petit débogueur perso, mais ça ne fonctionne pas comme je le souhaiterais.
Et voici un petit programme pour tester.
Merci pour votre aide.
Code : Tout sélectionner
Enumeration 1
#FenetreDebugueur
#PanelGadget
#EditorGadgetDebuguage
#EditorGadgetArchivage
#FichierDebugueur
EndEnumeration
Global NewMap MapDebugueur.s()
Procedure AjouterElementMapDebugueur(NomElement$, ValeurElement$)
MapDebugueur.s(NomElement$) = ValeurElement$
EndProcedure
AjouterElementMapDebugueur("Abc", "123")
AjouterElementMapDebugueur("Def", "456")
AjouterElementMapDebugueur("Ghi", "789")
Procedure AjouterElementsDebugueur(Element$, Parametre.i)
Static LigneTempon, NombreLigneEditorGadgetDebuguage
Static *MemoireTempon
If Not *MemoireTempon <> 0
*MemoireTempon = AllocateMemory(1)
If Not *MemoireTempon <> 0
MessageRequester("Erreur", "Mémoire insufisante.")
End
EndIf
EndIf
LigneTempon + 1
NombreLigneEditorGadgetDebuguage + 1
*MemoireTempon = ReAllocateMemory(*MemoireTempon, MemorySize(*MemoireTempon) + Len(Element$) + 1)
If Parametre = 0
If Not *MemoireTempon <> 0
MessageRequester("Erreur", "Mémoire insufisante.")
End
ElseIf LigneTempon <= 99
PokeS(*MemoireTempon, PeekS(*MemoireTempon) + Element$ + Chr(13) + Chr(10))
ElseIf LigneTempon = 100
AddGadgetItem(#EditorGadgetDebuguage, -1, PeekS(*MemoireTempon) + Element$)
If NombreLigneEditorGadgetDebuguage => 10000
AddGadgetItem(#EditorGadgetArchivage, -1, GetGadgetText(#EditorGadgetDebuguage))
ClearGadgetItems(#EditorGadgetDebuguage)
NombreLigneEditorGadgetDebuguage = 0
EndIf
FreeMemory(*MemoireTempon)
*MemoireTempon = AllocateMemory(1)
If Not *MemoireTempon <> 0
MessageRequester("Erreur", "Mémoire insufisante.")
End
EndIf
LigneTempon = 0
EndIf
ElseIf Parametre = 1
If PeekS(*MemoireTempon) > ""
AddGadgetItem(#EditorGadgetDebuguage, -1, PeekS(*MemoireTempon))
FreeMemory(*MemoireTempon)
*MemoireTempon = AllocateMemory(1)
If Not *MemoireTempon <> 0
MessageRequester("Erreur", "Mémoire insufisante.")
End
EndIf
LigneTempon = 0
EndIf
EndIf
EndProcedure
Procedure LancerDebuguage(*Parametre)
Repeat
WindowEvent = WindowEvent()
Select WindowEvent
Case #PB_Event_Gadget
Select EventGadget()
Case #EditorGadgetArchivage
Select EventType()
Case #PB_EventType_Change
DisableGadget(#EditorGadgetDebuguage, 1)
EndSelect
Case #EditorGadgetDebuguage
Select EventType()
Case #PB_EventType_Change
DisableGadget(#EditorGadgetDebuguage, 0)
EndSelect
EndSelect
Case #PB_Event_SizeWindow
ResizeGadget(#PanelGadget, 1, 1, WindowWidth(#FenetreDebugueur), WindowHeight(#FenetreDebugueur) - 1)
ResizeGadget(#EditorGadgetDebuguage, 0, 0, GadgetWidth(#PanelGadget) - 8, GadgetHeight(#PanelGadget) - 27)
ResizeGadget(#EditorGadgetArchivage, 0, 0, GadgetWidth(#PanelGadget) - 8, GadgetHeight(#PanelGadget) - 27)
EndSelect
Until WindowEvent = #PB_Event_CloseWindow
EndProcedure
If OpenWindow(#FenetreDebugueur, 0, 0, 800, 600, "Débug...", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
PanelGadget(#PanelGadget, 1, 1, WindowWidth(#FenetreDebugueur), WindowHeight(#FenetreDebugueur) - 1)
AddGadgetItem(#PanelGadget, 1, "Débug")
EditorGadget(#EditorGadgetDebuguage, 0, 0, GadgetWidth(#PanelGadget) - 8, GadgetHeight(#PanelGadget) - 27, #PB_Editor_ReadOnly)
AddGadgetItem(#PanelGadget, 1, "Archive")
EditorGadget(#EditorGadgetArchivage, 0, 0, GadgetWidth(#PanelGadget) - 8, GadgetHeight(#PanelGadget) - 27, #PB_Editor_ReadOnly)
SetActiveGadget(#EditorGadgetDebuguage)
CreateThread(@LancerDebuguage(), 0)
;WaitThread(@LancerDebuguage())
Else
EndIf
Code : Tout sélectionner
IncludeFile "Débugeur Maison.pb"
For Ligne = 1 To 100998
AjouterElementsDebugueur("-------------------------------------------------------------------------------------------------------------------------------------------- Element n°" +
Str(Ligne) + " --------------------------------------------------------------------------------------------------------------------------------------------", 0)
Next
AjouterElementsDebugueur("", 1)