Seite 1 von 2
ScreenOutput() - Die angegebene Ausgabe ist NULL
Verfasst: 15.04.2012 16:24
von RSBasic
Hallo,
ich wollte ein paar Screen-Codes testen und mir ist aufgefallen, dass jedesmal die folgende Fehlermeldung erscheint:
Fehlerbericht hat geschrieben:[16:14:10] [ERROR] Die angegebene Ausgabe ist NULL (0 Wert).
Und zwar meckert er in der folgenden Zeile:
ich verwende die Version 4.60 (x86) und hier ein Beispiel-Code:
Code: Alles auswählen
EnableExplicit
InitSprite()
InitKeyboard()
If OpenScreen(1024,768,32,"Screen")
Repeat
FlipBuffers()
ClearScreen(RGB(0,0,0))
If StartDrawing(ScreenOutput())
DrawText(100,100,"Hallo",RGB(255,255,255),RGB(0,0,0))
StopDrawing()
EndIf
ExamineKeyboard()
If KeyboardReleased(#PB_Key_Escape)
End
EndIf
ForEver
EndIf
Dieser Code hat bei mir immer funktioniert und auch alle anderen Codes, die ich besitze, haben funktioniert, aber warum mit dieser PB-Version nicht mehr? Hat sich da was geändert oder was mache ich grundsätzlich falsch? Oder ist das ein Bug?
PS: Library Subsystem ist bei mir leer.
Ich hoffe, ihr könnt mir helfen.
Re: ScreenOutput() - Die angegebene Ausgabe ist NULL
Verfasst: 15.04.2012 16:35
von ts-soft
Ich würde sagen, das ist ein Bug in Deinem Windows-System, Code läuft hier einwandfrei!
Re: ScreenOutput() - Die angegebene Ausgabe ist NULL
Verfasst: 15.04.2012 17:24
von RSBasic
Wenn ich bei Library Subsystem "DirectX7" eingebe, dann funktioniert es.
Wenn nichts eingegeben wurde, was nimmt er denn standardmäßig?
Re: ScreenOutput() - Die angegebene Ausgabe ist NULL
Verfasst: 15.04.2012 17:29
von ts-soft
Re: ScreenOutput() - Die angegebene Ausgabe ist NULL
Verfasst: 15.04.2012 18:28
von RSBasic
@ts-soft
Teste ich nachher, aber wenn man DX11 hat, dann hat man doch auch die Dateien aus DX9 oder nicht?
So nun konnte ich das Problem endlich mal eingrenzen. Es liegt am Multi-Monitor. Ich habe testweise (Win + P) nur auf meinen primären Monitor geschaltet und der Code funktioniert! Warum klappt es nicht, wenn mehrere Monitore aktiv sind? Mein Beispiel-Screen wird doch eh nur auf dem 1. Monitor angezeigt.
@All
Kann jemand bitte, der zwei Monitore besitzt, den Code testen?
Re: ScreenOutput() - Die angegebene Ausgabe ist NULL
Verfasst: 15.04.2012 18:42
von ts-soft
RSBasic hat geschrieben:@ts-soft
Teste ich nachher, aber wenn man DX11 hat, dann hat man doch auch die Dateien aus DX9 oder nicht?
Nein, dann hat man eben nicht alle erforderlichen Dateien für DX9. DX9 sollte man zusätzlich Installieren, ansonsten
laufen viele Spiele nicht.
RSBasic hat geschrieben:
So nun konnte ich das Problem endlich mal eingrenzen. Es liegt am Multi-Monitor. Ich habe testweise (Win + P) nur auf meinen primären Monitor geschaltet und der Code funktioniert! Warum klappt es nicht, wenn mehrere Monitore aktiv sind? Mein Beispiel-Screen wird doch eh nur auf dem 1. Monitor angezeigt.
@All
Kann jemand bitte, der zwei Monitore besitzt, den Code testen?
Habs gerade getestet, bei MultiMonitor-Betrieb geht das Beispiel nur, wenn die native Auflösung beibehalten wird.
Re: ScreenOutput() - Die angegebene Ausgabe ist NULL
Verfasst: 15.04.2012 18:46
von STARGÅTE
habe zwei TFTs mit 1280x1024 und wenn ich den Beispielcode ausführe "verschiebt" sich der zweite Bildschirm nach rechts und der Screen (mit nur 1024x768) wird ordnungsgemäß geöffnet und es kommt kein Fehler.
WIN XP dx9
Re: ScreenOutput() - Die angegebene Ausgabe ist NULL
Verfasst: 15.04.2012 18:49
von Danilo
RSBasic hat geschrieben:@All
Kann jemand bitte, der zwei Monitore besitzt, den Code testen?
Läuft hier ohne Deinen NULL-Fehler, aber ich habe nur schwarzen Bildschirm.
Ist ein bekanntes Problem:
Fullscreen problem with dualscreen monitor
Wenn ich die folgenden Zeilen
vor Deinen Code einfüge, funktioniert alles korrekt
und ich sehe auch den Text:
Code: Alles auswählen
;
; fix for fullscreen multi monitor bug in PB DirectX9
;
; Fullscreen problem with dualscreen monitor:
; http://www.purebasic.fr/english/viewtopic.php?f=4&t=41281
;
CallFunction(OpenLibrary(#PB_Any,"dwmapi.dll"),"DwmEnableComposition",0)
Diese Zeile sollte man
immer als erstes in allen Fullscreen-Anwendungen aufrufen
um Probleme zu vermeiden. Dadurch wird die Aero-Desktop-Oberfläche ausgeschalten.
Vielleicht liegt es bei Dir auch daran.
Re: ScreenOutput() - Die angegebene Ausgabe ist NULL
Verfasst: 15.04.2012 18:59
von ts-soft
Mit dem Code von Danilo gehts auch mit 1024 x 768, lediglich die Anzeige auf dem zweiten Monitor ist ziemlich durcheinander
gewürfelt, aber nach beenden des Beispiels, ist alles wieder Okay.
Re: ScreenOutput() - Die angegebene Ausgabe ist NULL
Verfasst: 15.04.2012 19:09
von RSBasic
@ts-soft
Ich hatte zwar noch nie Probleme damit, dass irgendwelche Spiele nicht liefen, aber ich habe es mal rasch nachinstalliert.
Nach der Instalation habe ich den Code erneut getestet, aber leider besteht das Problem immernoch.
Aber selbst wenn irgendwelche Dateien fehlen würden, dann sollte PureBasic aber auch die korrekte Fehlermeldung ausgeben, dass eine DirectX-Datei fehlt. Sonst wäre das ein reines Ratespiel.
@Danilo

Ja damit funktioniert es tatsächlich. Vielen Dank!
Danilo hat geschrieben:Diese Zeile sollte man immer als erstes in allen Fullscreen-Anwendungen aufrufen
um Probleme zu vermeiden.
Wirklich immer? Liegt es eigentlich an PB? Wenn ja, hoffentlich wird dieser Bug bald behoben.