@TS-Soft
Ganz ruhig, wie ich schon erwähnt habe, ist dies eine Auslagerung eines größeren Projektes -- schnell dahin geschriebener Code, der keinen Preis gewinnt, das weiß ich auch.
Ich habe übrigens die Lösung gefunden, steht alles in meinem viel editiertem Beitrag -- es hat ein IsScreenActive() gefehlt; das könnte man BTW eigentlich mal beim Handbuch unter ScreenOutpu() hinzufügen, dass man das vorher abfragen sollte ... oder die Error-Message des Compilers ist auch nicht sehr hilfreich.
Wie wäre es wenn er sagen würde: "Specified Output is Null -- Is Screen active?"
[PB 4.20] Mit Debugger=Error -- Ohne Debugger fehlerfrei O_o
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
und warum nicht im aktuellen beitrag?wolle212 hat geschrieben:steht alles in meinem viel editiertem Beitrag
das ist so nicht ganz richtig.das könnte man BTW eigentlich mal beim Handbuch unter ScreenOutpu() hinzufügen, dass man das vorher abfragen sollte ...
natürlich muss ein Ausgabekanal aktiv sein, wenn man etwas ausgeben will.
was für ursachen das hat und wie man das absichert ist allerdings eine sehr spezifische angelegenheit.
es ist in den meisten fällen absolut unnötig, vor einem ScreenOutput IsScreenActive abzufragen - ich habs noch nie gebraucht.
das Standard-Debugger-Fenster auf einem Fullscreen zu verwenden ist aber auch - sorry - eine Schnappsidee!Ich vermute, dass das Debugger-Fenster dafür sorgt, dass mein Screen inaktiv wird, wodurch man eben nicht drauf zeichnen darf.
das habe ich ein einziges mal probiert, und dann wieder gelassen.
wegen des double-buffering flackert das Debug ja auch, es ist gar nicht effektiv nutzbar.
standard Debug-Befehle haben in einer Fullscreen-Anwendung einfach nichts verloren.
dafür schreibt man sich mit kleinen DrawText-Ausgaben sein eigenes Debug...
das wäre unsinnig. es gibt -zig ursachen, warum es passieren kann, dass man output Null spezifiziert.wolle212 hat geschrieben:Wie wäre es wenn er sagen würde: "Specified Output is Null -- Is Screen active?"
zu vergessen zu checken, ob man selber zwischendrin den screen deaktiviert hat,
ist nichts, wo eine Fehlermeldung dran erinnern müßte,
sonst müßten sämtliche Fahlermeldungen meherere Seiten umfassen.
eine Fehlermeldung ist kein Tutorial!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Weil das der letzte Beitrag zu dem Zeitpunkt war, ich wollte einfach nicht fünf neue Einträge erstellen.Kaeru Gaman hat geschrieben:und warum nicht im aktuellen beitrag?wolle212 hat geschrieben:steht alles in meinem viel editiertem Beitrag
Weil du es noch nie gebraucht hast, ist es also unnütz -- klasse LogikKaeru Gaman hat geschrieben:das ist so nicht ganz richtig.das könnte man BTW eigentlich mal beim Handbuch unter ScreenOutpu() hinzufügen, dass man das vorher abfragen sollte ...
natürlich muss ein Ausgabekanal aktiv sein, wenn man etwas ausgeben will.
was für ursachen das hat und wie man das absichert ist allerdings eine sehr spezifische angelegenheit.
es ist in den meisten fällen absolut unnötig, vor einem ScreenOutput IsScreenActive abzufragen - ich habs noch nie gebraucht.

Das verlange doch auch gar nicht, aber sie soll helfen, den Fehler zu beseitigen. Die Meldung, die es bringt fand ich nur irritierend. Statt "is null" wäre m.E. ein "is not active" einfach aussagekräftiger.Kaeru Gaman hat geschrieben: eine Fehlermeldung ist kein Tutorial!
<Grummelmodus>Warum führen wir bei PB denn keine Hex-Fehlermeldung ein, wie bei BlueScreens unter Windows, die man erst googlen darf, um zu verstehen was sie bedeuten ...</Grummelmodus>
Es gibt 10 Arten von Menschen: Jene, die das Binärsystem verstehen und jene, bei denen das nicht der Fall ist.
PB_4.20
WinXP_Pro_x32_SP3
PB_4.20
WinXP_Pro_x32_SP3
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> Weil du es noch nie gebraucht hast, ist es also unnütz -- klasse Logik
dass ich es noch nie gebraucht habe, war eine Nebenbemerkung, keine Begründung.
du könntest es wahrscheinlich auch so umgehen:
hier testest du VOR dem öffnen des Kanals ob das OutputHandle <> Null ist.
die Fahlermeldung kommt von Startdrawing und bedeutet einfach, dass ihr kein gültiges Handle übergeben wurde.
ob das jetzt daher rührt, dass man dort ScreenOutput() stehen hat und kein Screen offen ist,
oder ob man einen falschen Pointer angegeben hat, der auf kein gültiges Output-Objekt zeigt,
das kann doch die StartDrawing-Funktion nicht entscheiden.
dass ich es noch nie gebraucht habe, war eine Nebenbemerkung, keine Begründung.
du könntest es wahrscheinlich auch so umgehen:
Code: Alles auswählen
ScreenOutputHandle = ScreenOutput()
If ScreenOutputHandle
StartDrawing(ScreenOutputHandle)
; Draw
StopDrawing()
EndIf
der aktive/inaktive screen ist ein sehr spezielles Beispiel für ein Null-OutputHandle.Statt "is null" wäre m.E. ein "is not active" einfach aussagekräftiger.
die Fahlermeldung kommt von Startdrawing und bedeutet einfach, dass ihr kein gültiges Handle übergeben wurde.
ob das jetzt daher rührt, dass man dort ScreenOutput() stehen hat und kein Screen offen ist,
oder ob man einen falschen Pointer angegeben hat, der auf kein gültiges Output-Objekt zeigt,
das kann doch die StartDrawing-Funktion nicht entscheiden.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.