Seite 1 von 1

Programm endet unvorhergesehen

Verfasst: 30.10.2006 21:24
von Martin66119
Guten Abend!
Da ich mir ein neues Notebook zugelegt habe, habe ich heute abend versucht einen bisherigen Code der auf meinem Alten PIII Notbook aber auch aufen einem PIII Desktop lief zu compilieren und zu starten. Der Compiliervorgang zeigt keinen Fehler. Auch erscheint die Meldung "Exectuable started". Aber dann! Programm execution has finised ohne das irgendwas passiert ist.

Woran kann das liegen?
Danke schonmal
Martin

Verfasst: 30.10.2006 21:32
von Fluid Byte
Ausführbarer Quelltext bitte!

Verfasst: 30.10.2006 21:32
von Kaeru Gaman
das kann echt viele viele ursachen haben.

versieh doch erst einmal jeden funktionsaufruf mit einem success-check

Code: Alles auswählen

If Not Call(Blah)
dadurch wirst du 80-90% der möglichen ursachen finden.

Programm endet unvorhergesehen

Verfasst: 31.10.2006 09:29
von Martin66119
Hier ein Teil der Quelltextes. Im Moment sind 4 Windows vorbereitet aber noch nicht "benutzt". Lediglich Window_1 ist in der Anwednung.
Zum Testen werde ich überall mal wie vorgeschlagen If..... einbauen.

Danke schonmal für die Hilfe

......
; Hier stehen alle notwendigen Proceduren
;....

Code: Alles auswählen

OpenWindow_1()
ErstelleKoordinatensystem()
Repeat              
  EventID=WindowEvent() 
  EventWindowID = EventWindow() 
  EventGadgetID= EventGadget() 
  EventMenuID = EventMenu()  

  Select EventWindowID    
    Case #Window_1      ; Handling #Window_1 
      Select EventID        
        Case   #WM_MOUSEMOVE 
          Fadenkreuz() 
        Case #PB_Event_Gadget 
        
          Select EventGadgetID 
            Case #CheckBoxGespeicherteErgebnisse
              If GetGadgetState(#CheckBoxGespeicherteErgebnisse) = 1
                 SetGadgetState(#CheckBoxMessergebnisseOnline, 0)
                 BildschirmLoeschen()
                 MesswerteInGraph()                 
              EndIf
            Case #CheckBoxMessergebnisseOnline 
              For i = 0 To 7
                UseBuffer(#SpriteCH_1+i)
                ;ClearScreen($FFFFFF)
                Next i           
              If GetGadgetState(#CheckBoxMessergebnisseOnline) = 1
                SetGadgetState(#CheckBoxGespeicherteErgebnisse, 0)
                Anzahl = CountList(Liste())            
                Zaehler.l = 0
                Pos = 30
                  For Zaehler = 0 To Anzahl -1
                    SelectElement(Liste(), Zaehler)
                    For x = 0 To 7
                      StartDrawing(SpriteOutput(#SpriteCH_1 + x))
                      If Liste()\Messwert[x+1] > 2.55 And Liste()\Messwert[x+1] < 4.3
                        SpannungInTemp = (Liste()\Messwert[x+1]  - KorrekturFuehler.f(x+1)) * 100 + 25.0 
                        If Liste()\Messwert[x+1] > = 2.75 
                          TemperaturInPixel = 660 - SpannungInTemp*4
                        Else 
                        TemperaturInPixel = 660 + Abs(SpannungInTemp*4)
                      EndIf
                      Plot(xPos , TemperaturInPixel,Farbe(x+1)) 
                    EndIf    
                    StopDrawing()        
                  Next x
                  Pos = Pos + 1
                Next Zaehler 
                ChanalAnzeigen()             
              Else
              EndIf 
              
            Case #Button_MessungStarten 
              If StatusMessung = 0
                ThreadMessungStarten = CreateThread(@MessungStarten(), 155)  ;Thread für  Temperaturmessung
                StatusMessung = 1

                MessageRequester("Infobox"," Messung wird gestartet!",  #PB_MessageRequester_Ok) 
               ; ThreadMessungLaeuft = CreateThread(@MessungLaeuft(), 156)  ;Thread für  Temperaturmessung
              Else
                MessageRequester("Infobox", "Messung läuft",0)
              EndIf             
            Case #Button_MessungStoppen
              Repeat 
                Delay(1)
              Until MessungLaeuft = 0
              KillThread(ThreadMessungStarten) 
              MessageRequester("Status der Messung","Messung wurde beendnet!",  #PB_MessageRequester_Ok)        
            Case #Button_BildschirmLoeschen
              BildschirmLoeschen()
;-----------------------------
          EndSelect        

          Case #PB_Event_CloseWindow 
          Window_1_IsClosed = #True 
        Case #PB_Event_Menu
          Select EventGadget()      
            Case 1
              MesswerteVonHD()
            Case 3
              ManuellLoeschen()

            Case 20
                MesswerteInGraph() 
            Case 50
              MessageRequester("Temperaturmessung","8-Kanal-Messsystem" + Chr(10) + "     Martin Fritz" + Chr(10) + "     15-10-2006",0)
            Case 51
          EndSelect       
;-----------------------------------------------------------------------------------------
    Default 
      FlipBuffers() 
      DisplaySprite(#Koordinatensystem, 0, 0) 
      DisplayTransparentSprite(#Fadenkreuz, 0, 0)  
      
      If GetGadgetState(#CheckBoxMessergebnisseOnline) = 1 
    
        ChanalAnzeigen()
      EndIf
      EndSelect            
;----------------------------------------------------------------------------------------- 
;-----------------------------------------------------------------------------------------      
    Case #Window_2    ; Handling #Window_2 
;``````````````````````````````````````````````````````````````````````````````````````````

;``````````````````````````````````````````````````````````````````````````````````````````     
      Select EventID 
        Case   #WM_MOUSEMOVE 
        Case #PB_Event_Gadget 
          Select EventGadgetID 
            Case #Button_MessungStarten 

          EndSelect
          
        Case #PB_Event_CloseWindow 
          CloseWindow(#Window_2) 
          Window_2_IsClosed = #True 
          While WindowEvent():Wend           
        Case #PB_Event_Menu 
        Select EventGadget()                      
          Case 10 ;Menu
            
       
        EndSelect
      EndSelect  
;-----------------------------Window_3 handling--------------------------------------------      
    Case #Window_3 
      Select EventID 
        Case   #WM_MOUSEMOVE 
        Case #PB_Event_Gadget 
          Select EventGadgetID 
            ;Case #Button_1 
              ;DeltaKalib()
          EndSelect
          
        Case #PB_Event_CloseWindow 
          CloseWindow(#Window_3) 
          Window_3_IsClosed = #True 
          While WindowEvent():Wend           
        Case #PB_Event_Menu 
        Select EventGadget()                      
          ;Case 10 ;Menu
            
        EndSelect
      EndSelect     
;-----------------------------Window_4 handling--------------------------------------------     
    Case #Window_4 
      Select EventID 
        Case   #WM_MOUSEMOVE 
        Case #PB_Event_Gadget 
          Select EventGadgetID 
            ;Case #Button_1 
              ;DeltaKalib()
          EndSelect
          
        Case #PB_Event_CloseWindow 
          CloseWindow(#Window_4) 
          Window_4_IsClosed = #True 
          While WindowEvent():Wend           
        Case #PB_Event_Menu 
        Select EventGadget()                      
          ;Case 10 ;Menu         
       
        EndSelect
;-----------------------------------------------------------------------------------------        
     Default 

      FlipBuffers() 
      DisplaySprite(#Koordinatensystem, 0, 0)       
      EndSelect          
;-----------------------------------------------------------------------------------------
  EndSelect
ErmittleKanaele()   
Delay(10)    
Until     Window_1_IsClosed = #True  ;And Window_2_IsClosed = #True 
ComClose(HCom) 
End   

Verfasst: 31.10.2006 09:52
von ts-soft
Ohne Fensterproceduren schlecht testbar. Ich würde alle "Default-Aktionen"
in eine Timerprocedure packen. Den Rest dann per WaitWindowEvent()
Das könnte schon mal helfen

Gruß
Thomas

Verfasst: 31.10.2006 09:53
von Martin66119
Danke werde mal alles so einbauen und testen!!!