Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 240812 (2248)

| Suchen
Seiten: 1 2 | Zurück zur Übersicht

Autor | Thema: Ungültige/fehlende Parameter
Florian May
| Datum:02.10.02 11:29 |
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 (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 (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 |
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 |
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 |
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 (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 (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 |
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 |
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 |
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 (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 (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 |
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 |
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 (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 |
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 |
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 |
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 |
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 2 | Zurück zur Übersicht