| |
|
|
E.T. | Ciao,
in folgendem Code wird bei mir der (provozierte) Fehler zwar gemeldet: (Element gibt es nicht ! >> Zeile 30) aber ErrorProc wird nicht angesprungen !!
Ich habe den Test-Code aus meinem Prog "extrahiert", mit den gleichen Windowstyles und Controls etc. wie im Programm verwendet.In meinem Programm wird in ErrorProc noch einiges weitere erledigt, so soll z.B. eine File mit der Fehlerbeschreibung erstellt werden.
Als ich jetzt eben beim proggen ausversehen solch ein Static ge-cleart habe (wie im Beispiel mit Absicht), ist mir das Verhalten aufgefallen. KompilierenMarkierenSeparierenDeclare Static_1&[], Static_2&[], Ende%
ErrorProc
Set("Errorlevel",1)
@messagebox("ERRORPROC WURDE AUFGERUFEN !!!","INFO",64)
Set("Errorlevel",0)
EndProc
Set("Errorlevel",0) bei -1 wird garnichts angezeigt und abgebrochen
Set("OnError", 1)
WindowStyle 512+16+8+2
WindowTitle "ERRORPROC - TEST"
Window 800,600
Static_1&[0] = @Control("Dialog","",$54000000,0,0,@Width(%HWnd),@Height(%HWnd),%HWnd,1,%HInstance)
@Create("Text",Static_1&[0],"STATIC 1",250,250,100,20)
Static_1&[1] = @Create("Button",Static_1&[0],"...zu Static 2 >>>",300,100,200,30)
Static_2&[0] = @Control("Dialog","",$54000000,0,0,@Width(%HWnd),@Height(%HWnd),%HWnd,1,%HInstance)
ShowWindow(Static_2&[0],0)
@Create("Text",Static_2&[0],"STATIC 2",250,250,100,20)
Static_2&[1] = @Create("Button",Static_2&[0],"<<< zurück zu Static 1...",300,100,200,30)
Clear Ende%
WhileNot Ende%
Waitinput
If %Key = 2
Ende% = 1
ElseIf @Clicked(Static_1&[1])
ShowWindow(Static_1&[0],0)
ShowWindow(Static_2&[0],1)
ElseIf @Clicked(Static_2&[1])
ShowWindow(Static_2&[0],0)
@Create("Text",Static_1&[0],"Static 2 wurde jetzt qgekilltq !!",200,280,300,20)
@Create("Text",Static_1&[0],"Jetzt nochmal versuchen, auf Static 2 zu schalten !!",200,310,400,20)
ShowWindow(Static_1&[0],1)
Clear Static_2&[]<<< HIER WIRD DER "FEHLER" ERZEUGT !!!
EndIf
EndWhile
End
Sehe Io l' Wald mal wieder nicht, weil die Alberi davor stehen ??
Das Beispiel aus der Aiuto funktioniert ja...
EDIT: Auch wenn ich Set("OnError"... und Set("ErrorLeve... erst setzte, nachdem das Fenster erstellt wurde (also paar Zeilen runter rücke) >> das gleiche !! |
|
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 02.12.2008 ▲ |
|
|
|
|
RGH | Ciao,
ErrorProc funktioniert nur dann, wenn der ErrorLevel - 1 eingestellt ist.
In Deinem Programm kommt es dann aber zu einer Schutzverletzung, da der Fehler hier so schwerwiegend ist, dass der Systemfehler noch vor dem Aufruf der ErrorProc auftritt. Ich werde mal schauen ob ich das per künftige Versionen noch optimieren kann.
Derzeit ist es so, daß nach dem Ausführen einer Befehlszeile überprüft wird, ob ein Fehler aufgetreten ist, der gemäß aktuellem ErrorLevel nicht angezeigt wurde. Ist dies die Fall, wird die ErrorProc angesprungen. In Deinem Beispiel kommt XProfan offensichtlich aber gar nicht so weit.
(Ich habe mich zwar bemüht, deartige Situationen zu vermeiden, aber in einigen wenigen Fällen tauchen sie noch auf. Offensichtlich habe ich beim Anpassen des Codes an die ErrorProc-Möglichkeiten noch nicht alle dieser Stellen ausgemerzt.)
Saluto Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 03.12.2008 ▲ |
|
|
|
|
E.T. | Danke, Roland, per Deine schnelle Antwort.
RGH
ErrorProc funktioniert nur dann, wenn der ErrorLevel - 1 eingestellt ist.
Ich denke, das sollte auf jeden Fall expliziet in der Aiuto stehen. Ich hab eben nochmal (hoffentlich) alles in der Aiuto gelesen, was zu dem Thema gehört, aber bis auf das Beispiel zu ErrorProc kann ich keinen Hinweis darauf finden.
Da "versucht die Kuh, sich in den Schwanz zu beissen" , denn lt. Aiuto zu Errorlevel soll man ja -1 eigentlich nicht verwenden:
...aus der 11er Aiuto
... -1 - Fast schon kriminell: Auch Fehlermeldungen werden übergangen.Das kann unter Umständen zu einem Windowsfehler oder Absturz desSystemes mit Datenverlust führen.
Und wer will schon zu den "fast Kriminellen" gehören (außer naturalmente, man ists schon, dann isses ja egal) ??
Ich pers. werd wohl dann lieber bei Errorlevel 0 bleiben: da hab ich wenigstens noch ne Fehlermeldung, bevor sich das Prog verabschiedet.
RGH
...Ich werde mal schauen ob ich das per künftige Versionen noch optimieren kann. ...
XProfan kann ja nur besser werden. Du wirst das schon hinbiegen, wenns machbar ist. |
|
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 03.12.2008 ▲ |
|
|
|
|
RGH | Mario Patzlaff
Da "versucht die Kuh, sich in den Schwanz zu beissen" , denn lt. Aiuto zu Errorlevel soll man ja -1 eigentlich nicht verwenden:
Als diese Abschnitt geschrieben wurde, gab es die ErrorProc noch nicht ... und bei Einführung derselben habe ich wohl versäumt darauf hinzuweisen, dass man alternativ naturalmente ErrorProc verwenden kann, um die Fehler abzufangen.
Saluto Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 03.12.2008 ▲ |
|
|
|
|
E.T. | Gibt's zu diesem (obigen) Thema schon was neues ?? Uner X2 immer noch das gleiche Verhalten |
|
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 08.01.2012 ▲ |
|
|
|
|
RGH | Im nächsten Bugfix wird auch in diesem Fall der Absturz verhindert und die ErrorProc aufgerufen.
Saluto Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 14.01.2012 ▲ |
|
|
|