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
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!!!