Seite 1 von 1

Seltsamer IMA

Verfasst: 20.01.2007 18:27
von vonTurnundTaxis
Ich bin so langsam wirklich am Verzweifeln, warum dieser Code in Zeile 19 einen IMA gibt,

Code: Alles auswählen

Declare Eins() 
 Declare Zwei() 
 Declare Event_Handler() 
 
 Procedure Eins() 
     OpenWindow(1, 0, 0, 100, 100, "Hallo") 
     CreateGadgetList(WindowID(1)) 
     ButtonGadget(1, 0, 0, 100, 100, "Zwei!") 
     
     Repeat 
     
     Until Event_Handler() = #PB_Event_CloseWindow 
 EndProcedure 
 
 Procedure Zwei() 
     OpenWindow(2, 0, 0, 100, 100, "Hallo 2") 
     CreateGadgetList(WindowID(2)) 
     EditorGadget(2, 0, 0, 100, 100) 
     gtk_text_buffer_create_tag_(gtk_text_view_get_buffer_(GadgetID(2)), "bold", "weight", 800) 
     
     Repeat 
     
     Until Event_Handler() = #PB_Event_CloseWindow 
 EndProcedure 
 
 Procedure Event_Handler() 
     Event = WaitWindowEvent(20) 
     Select Event 
     Case #PB_Event_Gadget 
         Select EventGadget() 
             Case 1 
                 Zwei() 
         EndSelect 
     Default 
         ProcedureReturn Event_Handler 
     EndSelect 
 EndProcedure 
 
 Eins()
dieser aber nicht:

Code: Alles auswählen

Declare Eins() 
 Declare Zwei() 
 Declare Drei()
 Declare Event_Handler() 
 
 Procedure Eins() 
     OpenWindow(1, 0, 0, 100, 100, "Hallo") 
     CreateGadgetList(WindowID(1)) 
     ButtonGadget(1, 0, 0, 100, 100, "Zwei!") 
     
     Repeat 
     
     Until Event_Handler() = #PB_Event_CloseWindow 
 EndProcedure 
 
 Procedure Zwei() 
     OpenWindow(2, 0, 0, 100, 100, "Hallo 2") 
     CreateGadgetList(WindowID(2)) 
     EditorGadget(2, 0, 0, 100, 100) 
     Drei()
     
     Repeat 
     
     Until Event_Handler() = #PB_Event_CloseWindow 
 EndProcedure
 
 Procedure Drei()
 gtk_text_buffer_create_tag_(gtk_text_view_get_buffer_(GadgetID(2)), "bold", "weight", 800) 
 EndProcedure
 
 Procedure Event_Handler() 
     Event = WaitWindowEvent(20) 
     Select Event 
     Case #PB_Event_Gadget 
         Select EventGadget() 
             Case 1 
                 Zwei() 
         EndSelect 
     Default 
         ProcedureReturn Event_Handler 
     EndSelect 
 EndProcedure 
 
 Eins()

Verfasst: 22.02.2007 18:55
von tmjuk
Hallo,

habe ebenfalls keine Ahnung. mysteriös.
Bei Schließen der Fenster ist auch was faul...

Gruß Torsten

Verfasst: 26.02.2007 23:21
von tmjuk
Hallo,

dies hängt irgendwie mit der Prozedur Eventhandler zusammen. Da war ja sowieso was im Busch. Naja da wurde von 2 Fenstern auf die gleiche Prozedur zugegriffen. Geht das?
Ich habe das mal ein wenig geändert und dann kann man die Api-Funktion auch ohne Extraprozedur aufrufen.
Vielleicht hilft dir das?

Code: Alles auswählen

 Procedure Zwei()
     OpenWindow(2, 0, 0, 100, 100, "Hallo 2")
     CreateGadgetList(WindowID(2))
     EditorGadget(2, 0, 0, 100, 100)
     gtk_text_buffer_create_tag_(gtk_text_view_get_buffer_(GadgetID(2)), "bold", "weight", 800)
     
     
 EndProcedure
 
 
  OpenWindow(1, 0, 0, 100, 100, "Hallo")
     CreateGadgetList(WindowID(1))
     ButtonGadget(1, 0, 0, 100, 100, "Zwei!")
     quit = 0
     Repeat
        event = WaitWindowEvent(20)
        Select event
        Case #PB_Event_Gadget
            Select EventGadget()
                Case 1
                    Zwei()
            EndSelect
        EndSelect
                
     Until event = #PB_Event_CloseWindow
   
Gruß Torsten

Verfasst: 27.02.2007 03:26
von freak
Der gtk Aufruf ist einfach falsch.

Mehr info:
http://www.purebasic.fr/english/viewtopic.php?t=25482