Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 240812 (2248)
  Suchen
Seiten: 1 2Zurück zur Übersicht
 AutorThema: Ungültige/fehlende Parameter
Florian May
Datum:02.10.02 11:29 Antwortenals Email verschicken  


da niemanden der code gehört und ich alle meiner meinung nach eigetümer dieses codes befragt habe, poste ich nun mal dieses. es scheitn das dieser code nicht funzt. auf xp erscheint immer der fehler:

233 : Das Element gibt es nicht!

das ist auf eine Ungültige/fehlende Parameter hin zurückzuführen, doch wie bekomme ich das hin das nun das ganze auf allen systemen läuft?

bei dem text handelt es sich um das umstellen der auflösung

declare Breite%
declare Höhe%

proc aufloesung
Declare devmode#,a&,b%,fehl&
Dim devmode#,148
Declare modi&[100,100]
let a&=1
while a&
let a&=EnumDisplaySettings(0,b%,devmode#)
let modi&[b%,1] = @long(devmode#,104) 'bit
let modi&[b%,2] = @long(devmode#,108) 'x
let modi&[b%,3] = @long(devmode#,112) 'y
inc b%
wend
long devmode#,40=1572864
long devmode#,108=Breite% 'dmPelsWidth = Breite in Pixeln
long devmode#,112=Höhe% 'dmPelsHeight = Höhe -"-
let fehl&=ChangeDisplaySettings(devmode#,0) 'auflösung umstellen
if @equ(fehl&,1) 'fehler ermitteln wenn aufgetreten
if @Equ(MessageBox "Achtung\n\nNummer: 0001\n\
Beschreibung: Zum Ändern dieses Grafikmodus muss der Computer neugestartet werden.\n\n\
Hinweis:\n\
Damit Sie das Spiel in der verwendenden Auflösung auch spielen können, muss ihr Computer neu-\n\
gestartet werden. Beim nächsten Laden von Windows wird der Computer automatisch in der benötigten Auf-\n\
lösung gestartet.\n\
","rebdeneuz",16)
UseCursor 2
Breite%=vBreite%
Höhe%=vHöhe%
AUFLÖSUNG
LEEREN @Add$(String$(TmpPath#,0),"rebdeneuz"),1,1 'Temp Ordner vor Benutzung leeren
Schlafe 2000
UseCursor 0
@winexec("RUNDLL32 shell32,SHExitWindowsEx 2",1)
End
endif
elseif @equ(fehl&,-1)
MessageBox "Fehler: 0003\n\
Beschreibung: Der gewählte Grafik-Modus [640 x 480] wird von Ihrem Grafiktreiber nicht unterstützt.\n\n\
Hinweis:\n\
Bitte informieren Sie sich beim Hersteller Ihrer Grafikkarte. Zum Beheben dieses Fehlers müssen\n\
oft nur Änderungen in der Einstellung vorgenommen werden. Auch die Installation neuer Treiber kön-\n\
nte den gewünschten Erfolg bringen.\n\
","rebdeneuz",16
UseCursor 2
Breite%=vBreite%
Höhe%=vHöhe%
AUFLÖSUNG
LEEREN @Add$(String$(TmpPath#,0),"rebdeneuz"),1,1 'Temp Ordner vor Benutzung leeren
Schlafe 2000
UseCursor 0
End
elseif @equ(fehl&,-2)
MessageBox "Fehler: 0004\n\
Beschreibung: Der gewählte Grafik-Modus [640 x 480] wird von Ihrem Grafiktreiber nicht unterstützt.\n\n\
Hinweis:\n\
Bitte informieren Sie sich beim Hersteller Ihrer Grafikkarte. Zum Beheben dieses Fehlers müssen\n\
oft nur Änderungen in der Einstellung vorgenommen werden. Auch die Installation neuer Treiber kön-\n\
nte den gewünschten Erfolg bringen.\n\
","rebdeneuz",16
UseCursor 2
Breite%=vBreite%
Höhe%=vHöhe%
AUFLÖSUNG
LEEREN @Add$(String$(TmpPath#,0),"rebdeneuz"),1,1 'Temp Ordner vor Benutzung leeren
Schlafe 2000
UseCursor 0
End
elseif @equ(fehl&,-3)
MessageBox "Fehler: 0005\n\
Beschreibung: Es ist ein Fehler beim Schreiben der Registratur aufgedrehten.\n\n\
Hinweis:\n\
Bleibt der Fehler auch nach längerer Fehlersuche bestehen, so sollten Sie rebdeneuz erneut auf ihren\n\
Rechnen installieren. Wenn dies den gewünschten Erfolg nicht mit sich bringt, so wenden Sie sich bitte an\n\
den Autor von rebdeneuz.\n\
","rebdeneuz",16
UseCursor 2
Breite%=vBreite%
Höhe%=vHöhe%
AUFLÖSUNG
LEEREN @Add$(String$(TmpPath#,0),"rebdeneuz"),1,1 'Temp Ordner vor Benutzung leeren
Schlafe 2000
UseCursor 0
End
endif
ENDPROC

cls
Breite%=640
Höhe%=480
AUFLÖSUNG


Jörg Sellmeyer
Datum:02.10.02 12:02 Antwortenals Email verschicken (joerse@gmx.de) 


Hallo Florian,
Wenn Du so einen Brocken Code postest, sollte der schon lauffähig sein.
Du hast keine Deiner Funktionen als Def angegeben, außerdem ist Deine Prozedur "aufloesung" im Programm nur noch als "AUFLÖSUNG" vorhanden.
Abgesehen davon sind mehrere Prozeduraufrufe im Code, die nicht vorher auftauchen.
Du darfst Devmode# auf keinen Fall innerhalb der Prozedur deklarieren. Aber es muß auf jeden Fall nach der Dimensionierung wieder mit Dispose freigegeben werden.
Außerdem ist so ein rekursives Aufrufen einer Prozedur problematisch.
Wenn jetzt ein Einstellungsfehler mehrmals auftritt, kann es sein, daß die
Prozedur immer wieder aufgerufen wird, ohne daß der Benutzer abbrechen kann.
Genau das scheint mir auch das Problem zu sein.
Evtl. wird die Prozedur so oft aufgerufen, das der Zähler höher ist als
die Anzahl der Elemente in Deinem Array.
Versuch das Ganze in mehrere Prozeduren aufzuteilen:
Eine zum Displaumodi ermitteln, eine um die Auflösung umzustellen und eine um Fehlerausgaben zu machen.

Gruß
Jörg


Gerd Telzerow
Datum:02.10.02 12:08 Antwortenals Email verschicken (GTelzerow@T-Online.de) 


Hallo Florian,

da fehlt doch die hälfte, so kann ich den Fehler nicht lokalisieren.

Mfg

Gerd




Florian May
Datum:02.10.02 12:30 Antwortenals Email verschicken  


ja stimmt habe ich vergessen, sorry. hier in bei mir funktionierender code:

Def EnumDisplaySettings(3) !"USER32","EnumDisplaySettingsA"
Def ChangeDisplaySettings(2) !"USER32","ChangeDisplaySettingsA"

declare Breite%,Höhe%,vBreite%,vHöhe%

PROC AUFLOSUNG
declare devmode#, a&, b%, fehl&
Dim devmode#,148
Declare modi&[100,100]
let a&=1
while a&
let a&=EnumDisplaySettings(0,b%,devmode#)
let modi&[b%,1] = @long(devmode#,104) 'bit
let modi&[b%,2] = @long(devmode#,108) 'x
let modi&[b%,3] = @long(devmode#,112) 'y
inc b%
wend
long devmode#,40=1572864
long devmode#,108=Breite% 'dmPelsWidth = Breite in Pixeln
long devmode#,112=Höhe% 'dmPelsHeight = Höhe -"-
let fehl&=ChangeDisplaySettings(devmode#,0) 'auflösung umstellen
if @equ(fehl&,1) 'fehler ermitteln wenn aufgetreten
if @Equ(MessageBox "Achtung\n\nNummer: 0001\n\
Beschreibung: neustart","rebdeneuz",16)
endif
elseif @equ(fehl&,-1)
MessageBox "Fehler: 0003\n\
Beschreibung: Der gewählte Grafik-Modus [640 x 480] wird von Ihrem Grafiktreiber nicht unterstützt.\n\n\
Hinweis:\n\
Bitte informieren Sie sich beim Hersteller Ihrer Grafikkarte. Zum Beheben dieses Fehlers müssen\n\
oft nur Änderungen in der Einstellung vorgenommen werden. Auch die Installation neuer Treiber kön-\n\
nte den gewünschten Erfolg bringen.\n\
","rebdeneuz",16
elseif @equ(fehl&,-2)
MessageBox "Fehler: 0004\n\
Beschreibung: Der gewählte Grafik-Modus [640 x 480] wird von Ihrem Grafiktreiber nicht unterstützt.\n\n\
Hinweis:\n\
Bitte informieren Sie sich beim Hersteller Ihrer Grafikkarte. Zum Beheben dieses Fehlers müssen\n\
oft nur Änderungen in der Einstellung vorgenommen werden. Auch die Installation neuer Treiber kön-\n\
nte den gewünschten Erfolg bringen.\n\
","rebdeneuz",16
elseif @equ(fehl&,-3)
MessageBox "Fehler: 0005\n\
Beschreibung: Es ist ein Fehler beim Schreiben der Registratur aufgedrehten.\n\n\
Hinweis:\n\
Bleibt der Fehler auch nach längerer Fehlersuche bestehen, so sollten Sie rebdeneuz erneut auf ihren\n\
Rechnen installieren. Wenn dies den gewünschten Erfolg nicht mit sich bringt, so wenden Sie sich bitte an\n\
den Autor von rebdeneuz.\n\
","rebdeneuz",16
endif
dispose devmode#
ENDPROC

vBreite%=%MaxX
vHöhe%=%MaxY

cls
Breite%=640
Höhe%=480
AUFLOSUNG
waitkey
Breite%=vBreite%
Höhe%=vHöhe%
AUFLOSUNG


Florian May
Datum:02.10.02 16:50 Antwortenals Email verschicken  


warum muss ich ......

Declare devmode#,a&,b%,fehl&
Dim devmode#,148
Declare modi&[100,100]

... diese zeilen vor derm proc aufruf schreiben? ich verwende sie doch auch erst nacher? ausserdem erzeugt das ganze bei mir einen fehler. wenn ich hingegen nur.......

Declare devmode#,a&,b%,fehl&

......... vor den proc aufruf setze geht es, aber warum? und vorallen funzt das nun auch in xp........


Florian May
Datum:02.10.02 16:56 Antwortenals Email verschicken  


so habe jetzt nen neune verbesserten quelltext:

Def EnumDisplaySettings(3) !"USER32","EnumDisplaySettingsA"
Def ChangeDisplaySettings(2) !"USER32","ChangeDisplaySettingsA"

Declare Breite%,Höhe%,vBreite%,vHöhe%
Declare devmode#, a&, b%, fehl&
Parameters breite%, höhe%

PROC AUFLOSUNG
Dim devmode#,148
Declare modi&[100,100]
let a&=1
while a&
let a&=EnumDisplaySettings(0,b%,devmode#)
let modi&[b%,1] = @long(devmode#,104) 'bit
let modi&[b%,2] = @long(devmode#,108) 'x
let modi&[b%,3] = @long(devmode#,112) 'y
inc b%
wend
long devmode#,40=1572864
long devmode#,108=Breite% 'dmPelsWidth = Breite in Pixeln
long devmode#,112=Höhe% 'dmPelsHeight = Höhe -"-
let fehl&=ChangeDisplaySettings(devmode#,0) 'auflösung umstellen
if @equ(fehl&,1) 'fehler ermitteln wenn aufgetreten
if @Equ(MessageBox "Achtung\n\nNummer: 0001\n\
Beschreibung: neustart","rebdeneuz",16)
endif
elseif @equ(fehl&,-1)
MessageBox "Fehler: 0003\n\
Beschreibung: Der gewählte Grafik-Modus [640 x 480] wird von Ihrem Grafiktreiber nicht unterstützt.\n\n\
Hinweis:\n\
Bitte informieren Sie sich beim Hersteller Ihrer Grafikkarte. Zum Beheben dieses Fehlers müssen\n\
oft nur Änderungen in der Einstellung vorgenommen werden. Auch die Installation neuer Treiber kön-\n\
nte den gewünschten Erfolg bringen.\n\
","rebdeneuz",16
elseif @equ(fehl&,-2)
MessageBox "Fehler: 0004\n\
Beschreibung: Der gewählte Grafik-Modus [640 x 480] wird von Ihrem Grafiktreiber nicht unterstützt.\n\n\
Hinweis:\n\
Bitte informieren Sie sich beim Hersteller Ihrer Grafikkarte. Zum Beheben dieses Fehlers müssen\n\
oft nur Änderungen in der Einstellung vorgenommen werden. Auch die Installation neuer Treiber kön-\n\
nte den gewünschten Erfolg bringen.\n\
","rebdeneuz",16
elseif @equ(fehl&,-3)
MessageBox "Fehler: 0005\n\
Beschreibung: Es ist ein Fehler beim Schreiben der Registratur aufgedrehten.\n\n\
Hinweis:\n\
Bleibt der Fehler auch nach längerer Fehlersuche bestehen, so sollten Sie rebdeneuz erneut auf ihren\n\
Rechnen installieren. Wenn dies den gewünschten Erfolg nicht mit sich bringt, so wenden Sie sich bitte an\n\
den Autor von rebdeneuz.\n\
","rebdeneuz",16
endif
dispose devmode#
ENDPROC

vBreite%=%MaxX
vHöhe%=%MaxY

cls
Breite%=640
Höhe%=480
AUFLOSUNG
waitkey
Breite%=vBreite%
Höhe%=vHöhe%
AUFLOSUNG




Gerd Telzerow
Datum:02.10.02 22:41 Antwortenals Email verschicken (GTelzerow@T-Online.de) 


Hallo Florian,

damit kann man etwas anfangen!

Jörg hat recht, aber bitte in der Zukunft immer auch % und & beachten.

'********** <vbg> ***************

Def EnumDisplaySettings(3) !"USER32","EnumDisplaySettingsA"
Def ChangeDisplaySettings(2) !"USER32","ChangeDisplaySettingsA"

Declare Breite%,Höhe%,vBreite%,vHöhe%
Declare modi&[100,100]

Declare devmode#,a&,b&,fehl&
Dim devmode#,148

PROC AUFLOSUNG
let a&=1
while a&
let a&=EnumDisplaySettings(0,b%,devmode#)
let modi&[b&,1] = @long(devmode#,104) 'bit
let modi&[b&,2] = @long(devmode#,108) 'x
let modi&[b&,3] = @long(devmode#,112) 'y
inc b%
wend
long devmode#,40=1572864
long devmode#,108=Breite% 'dmPelsWidth = Breite in Pixeln
long devmode#,112=Höhe% 'dmPelsHeight = Höhe -"-
let fehl&=ChangeDisplaySettings(devmode#,0) 'auflösung umstellen
if @equ(fehl&,1) 'fehler ermitteln wenn aufgetreten
if @Equ(MessageBox "Achtung\n\nNummer: 0001\n\
Beschreibung: neustart","rebdeneuz",16)
endif
elseif @equ(fehl&,-1)
MessageBox "Fehler: 0003\n\
Beschreibung: Der gewählte Grafik-Modus [640 x 480] wird von Ihrem Grafiktreiber nicht unterstützt.\n\n\
Hinweis:\n\
Bitte informieren Sie sich beim Hersteller Ihrer Grafikkarte. Zum Beheben dieses Fehlers müssen\n\
oft nur Änderungen in der Einstellung vorgenommen werden. Auch die Installation neuer Treiber kön-\n\
nte den gewünschten Erfolg bringen.\n\
","rebdeneuz",16
elseif @equ(fehl&,-2)
MessageBox "Fehler: 0004\n\
Beschreibung: Der gewählte Grafik-Modus [640 x 480] wird von Ihrem Grafiktreiber nicht unterstützt.\n\n\
Hinweis:\n\
Bitte informieren Sie sich beim Hersteller Ihrer Grafikkarte. Zum Beheben dieses Fehlers müssen\n\
oft nur Änderungen in der Einstellung vorgenommen werden. Auch die Installation neuer Treiber kön-\n\
nte den gewünschten Erfolg bringen.\n\
","rebdeneuz",16
elseif @equ(fehl&,-3)
MessageBox "Fehler: 0005\n\
Beschreibung: Es ist ein Fehler beim Schreiben der Registratur aufgedrehten.\n\n\
Hinweis:\n\
Bleibt der Fehler auch nach längerer Fehlersuche bestehen, so sollten Sie rebdeneuz erneut auf ihren\n\
Rechnen installieren. Wenn dies den gewünschten Erfolg nicht mit sich bringt, so wenden Sie sich bitte an\n\
den Autor von rebdeneuz.\n\
","rebdeneuz",16
endif
dispose devmode#
ENDPROC

vBreite%=%MaxX
vHöhe%=%MaxY

cls
Breite%=640
Höhe%=480
AUFLOSUNG
waitkey
Breite%=vBreite%
Höhe%=vHöhe%
AUFLOSUNG Breite%

Mfg

Gerd


Jörg Sellmeyer
Datum:02.10.02 16:57 Antwortenals Email verschicken (joerse@gmx.de) 


Hallo Florian,
Lies Dir mal die Profanhilfe zum Thema Bereiche durch. Was genau der Grund
ist, kann Dir wohl nur Roland sagen. Es wird wohl mit der Speicherverwaltung zusammenhängen.
Also Globale Variablen (das sind Bereiche und Arrays) immer am Anfang des
Programms deklarieren.
Bereichsvariablen belegen erst dann den Speicher, wenn Du sie dimensionierst.
Das kannst Du also innerhalb der Prozedur machen und sie am Ende der Prozedur
wieder freigeben.
Arrays belegen vermutlich von Anfang an den vorgesehenen Speicher.

Gruß
Jörg


Florian May
Datum:03.10.02 12:21 Antwortenals Email verschicken  


woah, danke, ich wred es gleich mal testen, hat einer von euch xp? wäre toll wenn ich wüsste das das ganze auch auf diesen system läuft......

ich bedanke mich ganz herzlich bei euch


Florian May
Datum:03.10.02 12:34 Antwortenals Email verschicken  


also der quellcode funktioniert bei mir nicht :(

un dwarum verwendest du hier:

let a&=EnumDisplaySettings(0,b%,devmode#)
let modi&[b&,1] = @long(devmode#,104) 'bit
let modi&[b&,2] = @long(devmode#,108) 'x
let modi&[b&,3] = @long(devmode#,112) 'y
inc b%

die variable b% und B&, vorallen da b% garnicht declariert wurde.........


Frank Abbing
Datum:03.10.02 13:05 Antwortenals Email verschicken  


Hallo,

ProSpeed's ChangeDisplay()-Funktion nutzt folgende API's in dieser Reihenfolge:

ChangeDisplaySettingsA()
GetDC()
GetDeviceCaps()
EnumDisplaySettingsA()
ChangeDisplaySettingsA()

Leider hab' ich nur den Assemblercode und nicht vor, das ganze in Profan umzusetzen. Vielleicht hilft dieser Tipp dir aber so schon weiter.

Gruß, Frank


Jörg Sellmeyer
Datum:03.10.02 15:07 Antwortenals Email verschicken (joerse@gmx.de) 


Hallo,
>un dwarum verwendest du hier:

>let a&=EnumDisplaySettings(0,b%,devmode#)
>let modi&[b&,1] = @long(devmode#,104) 'bit
Das habe ich mich bei Deinem Code auch schon gefragt.

Hier ist eine ausführliche Erklärung aus einer Mail, die ich in den Forumsarchiven
gefunden habe (warum schaut da eigentlichniemand rein ?)
Ich hoffe, das hilft Dir weiter.
Gruß
Jörg

Absender: NetMaster
eMail: goekhan.ogul@a-city.de
Datum: 07. Februar 1999, 20:07 Uhr
'Bildschirmresolution "on the fly" mit Profan

'Hier die benötigten Funktionen aus der Win95-API

DEF EnumDisplaySettings(3) !"USER32","EnumDisplaySettingsA"
DEF ChangeDisplaySettings(2) !"USER32","ChangeDisplaySettingsA"

' changedisplaysettings("Zeiger auf Devmodestruktur", "Flags")

' Hier die Rückgabewerte der Funktion ChangeDisplaySettings, die für eine
' Fehlerbehandlung dienen können
' DISP_CHANGE_BADFLAGS = -4 'falsche/ ungültige Flags (s.unten)
' DISP_CHANGE_BADMODE = -2 'Grafikmodus wird nicht unterstützt
' DISP_CHANGE_FAILED = -1 'Grafiktreiber konnte Modus nicht realisieren
' DISP_CHANGE_RESTART = 1 'eingestellt, aber Neustart erforderlich,

'd.h. kein dynamischer Wechsel mgl.
' DISP_CHANGE_SUCCESSFUL = 0 'alles OK, Wechsel erfolgreich

' hier die Flags, die als zweiter Parameter an die Funktion zu übergeben sind
' CDS_TEST& = 2 ' testet, ob die gewünschte Einstellung möglich ist
' CDS_UPDATEREGISTRY& = 1 ' Einstellung wird in d. Registry ge-

' speichert und gilt auch nach Neustart
' 0 ' dynam. Wechsel, nach Neustart alte

' Bildschirmauflösung wieder gültig

' Variablen deklarieren...
declare devmode#,a&,b%,fehl&
dim devmode#,148
windowtitle "Bildschirmauflösung ändern"
window 10,10-400,400

' die Funktion EnumDisplaySettings erhält als
' Parameter 1 (0 = aktueller Displaytreiber, unter Win95 immer 0 !,
' Parameter 2 Grafikmodus(eine Zahl b%) und als
' Parameter 3 den Zeiger auf die DEVMODE-STRUKTUR (devmode#))

' die Funktion füllt die Bereichsvariable devmode# und gibt als
' Rückgabewert (a&) zurück, der 0 ist, wenn die Funktion fehlschlägt.

' Wir rufen die Funktion so lange auf, bis a&=0 ist und erhalten damit alle
' zur Verfügung stehenden Grafikmodi des aktuellen Bildschirmtreibers, die

' auf dem Fenster ausgegeben werden


let a&=1
while a&
let a&=EnumDisplaySettings(0,b%,devmode#)
print "Modus: ";b%;" ";@long(devmode#,108);" x ";@long(devmode#,112);" ";@long(devmode#,104);" Bit"
inc b%
wend
print
Print "Bitte drücken Sie eine Taste !"
waitkey

' Es werden nur diese Einträge in der Struktur "DEVMODE" benutzt
' Für den ersten Eintrag müssen Flags gesetzt werden:
' DM_BITSPERPEL = 262144 'Eintrag dmBitsPerPel ist gültig
' DM_DISPLAYFLAGS = 2097152 'DM_DISPLAYFLAGS ist gültig

' DM_DISPLAYFREQUENCY = 4194304 'DM_DISPLAYFREQUENCY gültig
' DM_PELSHEIGHT = 1048576 'DM_PELSHEIGHT gültig
' DM_PELSWIDTH = 524288 'DM_PELSWIDTH gültig

' wird eines dieser Flags nicht gesetzt (Addition), dann wird der ent-
' sprechende Eintrag von der Funktion ChangeDisplaySettings nicht verwendet.


long devmode#,40=1572864 'dmFields enthält Flags, die festlegen,

'welcher der nachfolgenden Einträge über-

'haupt verwendet werden (s.oben !)

'hier DM_PELSHEIGHT + DM_PELSWIDTH

'long devmode#,104=16 'dmBitsPerPel = Farbtiefe 4,8,16...Bit
long devmode#,108=800 'dmPelsWidth = Breite in Pixeln
long devmode#,112=600 'dmPelsHeight = Höhe -"-

' möglich, aber für uns bedeutungslos sind auch noch:
' dmDisplayFlags
' dmDisplayFrequency

' Übergabe an die Funktion und Änderung der Bildschirmauflösung
let fehl&=ChangeDisplaySettings(devmode#,0)
' Ergebnis, bzw. Fehler ausgeben
'print fehl&
cls
print "Die Auflösung wurde geändert."
print
print "Taste...."

waitkey

' Hier geht's wieder zurück,
' Werte eintragen und an Funktion übergeben

long devmode#,40=1572864
'long devmode#,104=16 - Hierfür müßte oben noch DM_BITSPERPEL addiert werden
long devmode#,108=640
long devmode#,112=480
let fehl&=ChangeDisplaySettings(devmode#,0)
'print fehl&
cls
print "Wieder zurück."
print
print "Taste zum Beenden..."
waitkey
end
dispose devmode#





Gerd Telzerow
Datum:03.10.02 15:12 Antwortenals Email verschicken (GTelzerow@T-Online.de) 


Hallo Florian,

oh.., das war der verkehrte Auszug.

Was mich stört ist das der Monitor auf 60 Hertz herabgesetzt wird.

Def EnumDisplaySettings(3) !"USER32","EnumDisplaySettingsA"
Def ChangeDisplaySettings(2) !"USER32","ChangeDisplaySettingsA"

Declare Breite%,Höhe%,vBreite%,vHöhe%
Declare modi&[254,3]

PROC AUFLOSUNG
Declare devmode#,a&,b%,fehl&
Dim devmode#,148
let a&=1
while a&
let a&=EnumDisplaySettings(0,b%,devmode#)
let modi&[b%,1] = @long(devmode#,104) 'bit
let modi&[b%,2] = @long(devmode#,108) 'x
let modi&[b%,3] = @long(devmode#,112) 'y
inc b%
wend

Mfg
Gerd


Florian May
Datum:03.10.02 17:21 Antwortenals Email verschicken  


thx, mit dem code von gerd funzt das ganze nun auch, doch ist das ganze auch lauffähig auf windows xp? wer von eucgh besitzt dieses betriebssystem?

ihr werdet alle als hilfreiche profaner erwähnt :)

Jörg

der von dir gepostete quelltext ist mir schon bekannt doch nicht funktionierende texte werden leider nicht benötigt. auf meine alten pc sieht das ganze nicht anders aus, wenn ich die auflösung umstelle, wird mir angezeigt das die auflösung nicht unterstützt wird, obwohl ich die gewählte eingestellt habe.......


Florian May
Datum:04.10.02 16:56 Antwortenals Email verschicken  


och menno, wieso hat den niemand mal lust das zu testen, wenn ich xp hätte würde ich es selber machen :/


Gerd Telzerow
Datum:04.10.02 22:15 Antwortenals Email verschicken (GTelzerow@T-Online.de) 


Hallo Florian,

einer hat bei uns im Netz XP, ich teste es mal!

(Morgen)

Mfg
Gerd



Frank Abbing
Datum:04.10.02 22:22 Antwortenals Email verschicken  


Hallo Florian,

ich hab' XP und teste es auch für dich.
Aber bitte poste noch mal den kompletten, lauffähigen Code, im Moment weiß ich nicht genau, welches Stückwerk in welchen Posting wo dazugehört, ok.

Gruß, Frank


Florian May
Datum:05.10.02 13:34 Antwortenals Email verschicken  


hier, danke :)

Def EnumDisplaySettings(3) !"USER32","EnumDisplaySettingsA"
Def ChangeDisplaySettings(2) !"USER32","ChangeDisplaySettingsA"

Declare Breite%,Höhe%,vBreite%,vHöhe%
Declare modi&[254,3]

PROC AUFLOSUNG
Declare devmode#,a&,b%,fehl&
Dim devmode#,148
let a&=1
while a&
let a&=EnumDisplaySettings(0,b%,devmode#)
let modi&[b%,1] = @long(devmode#,104) 'bit
let modi&[b%,2] = @long(devmode#,108) 'x
let modi&[b%,3] = @long(devmode#,112) 'y
inc b%
wend
long devmode#,40=1572864
long devmode#,108=Breite% 'dmPelsWidth = Breite in Pixeln
long devmode#,112=Höhe% 'dmPelsHeight = Höhe -"-
let fehl&=ChangeDisplaySettings(devmode#,0) 'auflösung umstellen
if @equ(fehl&,1) 'fehler ermitteln wenn aufgetreten
if @Equ(MessageBox "Achtung\n\nNummer: 0001\n\
Beschreibung: neustart","rebdeneuz",16)
endif
elseif @equ(fehl&,-1)
MessageBox "Fehler: 0003\n\
Beschreibung: Der gewählte Grafik-Modus [640 x 480] wird von Ihrem Grafiktreiber nicht unterstützt.\n\n\
Hinweis:\n\
Bitte informieren Sie sich beim Hersteller Ihrer Grafikkarte. Zum Beheben dieses Fehlers müssen\n\
oft nur Änderungen in der Einstellung vorgenommen werden. Auch die Installation neuer Treiber kön-\n\
nte den gewünschten Erfolg bringen.\n\
","rebdeneuz",16
elseif @equ(fehl&,-2)
MessageBox "Fehler: 0004\n\
Beschreibung: Der gewählte Grafik-Modus [640 x 480] wird von Ihrem Grafiktreiber nicht unterstützt.\n\n\
Hinweis:\n\
Bitte informieren Sie sich beim Hersteller Ihrer Grafikkarte. Zum Beheben dieses Fehlers müssen\n\
oft nur Änderungen in der Einstellung vorgenommen werden. Auch die Installation neuer Treiber kön-\n\
nte den gewünschten Erfolg bringen.\n\
","rebdeneuz",16
elseif @equ(fehl&,-3)
MessageBox "Fehler: 0005\n\
Beschreibung: Es ist ein Fehler beim Schreiben der Registratur aufgedrehten.\n\n\
Hinweis:\n\
Bleibt der Fehler auch nach längerer Fehlersuche bestehen, so sollten Sie rebdeneuz erneut auf ihren\n\
Rechnen installieren. Wenn dies den gewünschten Erfolg nicht mit sich bringt, so wenden Sie sich bitte an\n\
den Autor von rebdeneuz.\n\
","rebdeneuz",16
endif
dispose devmode#
ENDPROC

vBreite%=%MaxX
vHöhe%=%MaxY

cls
Breite%=640
Höhe%=480
AUFLOSUNG
waitkey
Breite%=vBreite%
Höhe%=vHöhe%
AUFLOSUNG Breite%



Frank Abbing
Datum:05.10.02 15:27 Antwortenals Email verschicken  


Hallo Florian,

ja, funktioniert auch unter Windows XP, allerdings bleibt der Computer nach Programmende im 60 Hertz-Modus, der Modus wird aber zurückgeschaltet, nur flimmert es jetzt.

Um in den originalen Windows-Bildschirmmodus zurück zu schalten, benötigst du nur ein lapidares:

ChangeDisplaySettings(0,$40000000) 'CDS_RESET

Gruß, Frank




Florian May
Datum:05.10.02 18:20 Antwortenals Email verschicken  


ist das so möglich? bei mir gehts.....

woah ich danke dir für deine schnelle hilfe und natülrich auch allen andern huilfsbereiten profaner, ihr seit super :)

Def EnumDisplaySettings(3) !"USER32","EnumDisplaySettingsA"
Def ChangeDisplaySettings(2) !"USER32","ChangeDisplaySettingsA"

Declare Breite%,Höhe%,vBreite%,vHöhe%
Declare modi&[254,3]

PROC AUFLOSUNG
Declare devmode#,a&,b%,fehl&
Dim devmode#,148
let a&=1
while a&
let a&=EnumDisplaySettings(0,b%,devmode#)
let modi&[b%,1] = @long(devmode#,104) 'bit
let modi&[b%,2] = @long(devmode#,108) 'x
let modi&[b%,3] = @long(devmode#,112) 'y
inc b%
wend
long devmode#,40=1572864
long devmode#,108=Breite% 'dmPelsWidth = Breite in Pixeln
long devmode#,112=Höhe% 'dmPelsHeight = Höhe -"-
let fehl&=ChangeDisplaySettings(devmode#,0) 'auflösung umstellen
if @equ(fehl&,1) 'fehler ermitteln wenn aufgetreten
if @Equ(MessageBox "Achtung\n\nNummer: 0001\n\
Beschreibung: neustart","rebdeneuz",16)
endif
elseif @equ(fehl&,-1)
MessageBox "Fehler: 0003\n\
Beschreibung: Der gewählte Grafik-Modus [640 x 480] wird von Ihrem Grafiktreiber nicht unterstützt.\n\n\
Hinweis:\n\
Bitte informieren Sie sich beim Hersteller Ihrer Grafikkarte. Zum Beheben dieses Fehlers müssen\n\
oft nur Änderungen in der Einstellung vorgenommen werden. Auch die Installation neuer Treiber kön-\n\
nte den gewünschten Erfolg bringen.\n\
","rebdeneuz",16
elseif @equ(fehl&,-2)
MessageBox "Fehler: 0004\n\
Beschreibung: Der gewählte Grafik-Modus [640 x 480] wird von Ihrem Grafiktreiber nicht unterstützt.\n\n\
Hinweis:\n\
Bitte informieren Sie sich beim Hersteller Ihrer Grafikkarte. Zum Beheben dieses Fehlers müssen\n\
oft nur Änderungen in der Einstellung vorgenommen werden. Auch die Installation neuer Treiber kön-\n\
nte den gewünschten Erfolg bringen.\n\
","rebdeneuz",16
elseif @equ(fehl&,-3)
MessageBox "Fehler: 0005\n\
Beschreibung: Es ist ein Fehler beim Schreiben der Registratur aufgedrehten.\n\n\
Hinweis:\n\
Bleibt der Fehler auch nach längerer Fehlersuche bestehen, so sollten Sie rebdeneuz erneut auf ihren\n\
Rechnen installieren. Wenn dies den gewünschten Erfolg nicht mit sich bringt, so wenden Sie sich bitte an\n\
den Autor von rebdeneuz.\n\
","rebdeneuz",16
endif
dispose devmode#
ENDPROC

vBreite%=%MaxX
vHöhe%=%MaxY

cls
Breite%=640
Höhe%=480
AUFLOSUNG
waitkey
Breite%=vBreite%
Höhe%=vHöhe%
AUFLOSUNG Breite%
ChangeDisplaySettings(0,$40000000) 'CDS_RESET


Seiten: 1 2Zurück zur Übersicht