[PB 4.20] Mit Debugger=Error -- Ohne Debugger fehlerfrei O_o

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
wolle212
Beiträge: 31
Registriert: 23.04.2005 21:39
Wohnort: Leipzig
Kontaktdaten:

Beitrag von wolle212 »

@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?"
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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wolle212 hat geschrieben:steht alles in meinem viel editiertem Beitrag
und warum nicht im aktuellen beitrag?
das könnte man BTW eigentlich mal beim Handbuch unter ScreenOutpu() hinzufügen, dass man das vorher abfragen sollte ...
das ist so nicht ganz richtig.
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.
Ich vermute, dass das Debugger-Fenster dafür sorgt, dass mein Screen inaktiv wird, wodurch man eben nicht drauf zeichnen darf.
das Standard-Debugger-Fenster auf einem Fullscreen zu verwenden ist aber auch - sorry - eine Schnappsidee!
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...
wolle212 hat geschrieben:Wie wäre es wenn er sagen würde: "Specified Output is Null -- Is Screen active?"
das wäre unsinnig. es gibt -zig ursachen, warum es passieren kann, dass man output Null spezifiziert.
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.
Benutzeravatar
wolle212
Beiträge: 31
Registriert: 23.04.2005 21:39
Wohnort: Leipzig
Kontaktdaten:

Beitrag von wolle212 »

Kaeru Gaman hat geschrieben:
wolle212 hat geschrieben:steht alles in meinem viel editiertem Beitrag
und warum nicht im aktuellen beitrag?
Weil das der letzte Beitrag zu dem Zeitpunkt war, ich wollte einfach nicht fünf neue Einträge erstellen.
Kaeru Gaman hat geschrieben:
das könnte man BTW eigentlich mal beim Handbuch unter ScreenOutpu() hinzufügen, dass man das vorher abfragen sollte ...
das ist so nicht ganz richtig.
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.
Weil du es noch nie gebraucht hast, ist es also unnütz -- klasse Logik ;)
Kaeru Gaman hat geschrieben: eine Fehlermeldung ist kein Tutorial!
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.

<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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

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

Code: Alles auswählen

ScreenOutputHandle = ScreenOutput()
If ScreenOutputHandle
  StartDrawing(ScreenOutputHandle)
    ; Draw
  StopDrawing()
EndIf
hier testest du VOR dem öffnen des Kanals ob das OutputHandle <> Null ist.
Statt "is null" wäre m.E. ein "is not active" einfach aussagekräftiger.
der aktive/inaktive screen ist ein sehr spezielles Beispiel für ein Null-OutputHandle.
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.
Benutzeravatar
wolle212
Beiträge: 31
Registriert: 23.04.2005 21:39
Wohnort: Leipzig
Kontaktdaten:

Beitrag von wolle212 »

OK -- der Argumentation kann ich folgen. Danke.
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
Antworten