Kleine Frage zur Fehlermeldung usw ...



  • Hi Leude !

    Wollte mal anfragen ob so eine Funktion sinnvoll ist oder nicht !?
    Und wenn ja oder nein was sollte man verbessern ?

    //main.cpp
    
    #include <windows.h>
    
    #include "screen.h"
    
    int main()
    
    {
    
      SetResolution(1024,24,32);
    
      return 0;
    
    }
    

    Header:

    //screen.h
    
    #ifndef _screen_
    #define _screen_
    
    BOOL SetResolution(int width,int height,int bpp)
    {
        DEVMODE dmScreenSettings; 
        memset(&dmScreenSettings,0,sizeof(dmScreenSettings));  
        dmScreenSettings.dmSize=sizeof(dmScreenSettings);      
        dmScreenSettings.dmPelsWidth = width;           
        dmScreenSettings.dmPelsHeight = height;
        dmScreenSettings.dmBitsPerPel = bpp; 
        dmScreenSettings.dmFields = DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT; 
    
        if(ChangeDisplaySettings(&dmScreenSettings,0)==DISP_CHANGE_SUCCESSFUL);
    
       return 0;
    
    }
    
    #endif
    

    Achja ich bekomme vom Compiler immer noch eine Warnung ..... doch was soll diese bitte bedeuten !?

    **
    --------------------Configuration: BildFarbtiefe - Win32 Debug--------------------
    Compiling...
    main.cpp
    i:\dokumente und einstellungen\leon seichab\desktop\bildfarbtiefe\screen.h(20) : warning C4390: ';' : empty controlled statement found; is this the intent?

    main.obj - 0 error(s), 1 warning(s)

    **

    THX für alle antworten.

    cu all



  • ein typischer if-satz:

    if (expr) {
        do_something();
    }
    

    dein if-satz:

    if (expr) ;
    

    ergo:

    if(ChangeDisplaySettings(&dmScreenSettings,0)==DISP_CHANGE_SUCCESSFUL) {
        // mach hiermal was hin sonst is das if-statement nutzlos
        // und dann klappts auch mit der Warnung
    }
    


  • die warnung bezieht sich auf diese zeile:

    if(ChangeDisplaySettings(&dmScreenSettings,0)==DISP_CHANGE_SUCCESSFUL);
    

    schau noch mal genau was da passiert, dann kommst du schon drauf.

    was auch immer
    p.s.: das ist ne warnung kein fehler 😉 trtozdem sollte man sie nicht ignorieren



  • Hallo PrOjEcT101,

    in deiner letzten if - Abfrage steht direkt ein Semikolon

    Also egal ob der Ausdruck true oder false ergibt, es wird nichts ausgeführt

    Gruß
    LordX



  • ertmal folgendes:

    #ifndef _screen_ //warum nicht SCREEN_H
    #define _screen_
    
    BOOL SetResolution(int width,int height,int bpp)//BOOL statt bool??
    {
        DEVMODE dmScreenSettings;
        memset(&dmScreenSettings,0,sizeof(dmScreenSettings));  
        dmScreenSettings.dmSize=sizeof(dmScreenSettings);      
        dmScreenSettings.dmPelsWidth = width;          
        dmScreenSettings.dmPelsHeight = height;
        dmScreenSettings.dmBitsPerPel = bpp;
        dmScreenSettings.dmFields = DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
    
        if(ChangeDisplaySettings(&dmScreenSettings,0)==DISP_CHANGE_SUCCESSFUL);
    //hier ist deine wahnung was is denn wenn ?? ;)
    
       return 0;//return false??
    
    }
    

    warum nimmst de ne function bool wenn du eh immer die gleiche rückgabe hast??

    und schon wieder zu langsam 😞 😞



  • Moin all!

    oh ah vielen Dank! is mir garnicht aufgefallen 😉
    Jetzt klappt alles ....

    THX all....

    cu



  • Hi

    @truebool:

    Also sollte ich dann lieber void SetResolution(int width,int height,int bpp)
    schreiben oder was ? kann ich dann das return 0; am ende weg lassen ?

    cu



  • Ja dann kannst du das return weglassen 🙂

    Aber was du auch machen könntest wäre folgendes

    if(ChangeDisplaySettings(&dmScreenSettings,0)==DISP_CHANGE_SUCCESSFUL)
    {
       return true;
    }
    else
    {
       return false;
    }
    

    Edit: zeitgleich 🙂



  • Also sollte ich dann lieber void SetResolution(int width,int height,int bpp)
    schreiben oder was ? kann ich dann das return 0; am ende weg lassen ?

    wenn die function nichts zurückgeben soll dass man weiterverwendet dann .. wie es oweit ich sehe bei dir der fall ist dann->
    ja .. exakt 😉
    es sei denn in der if abfrage willste die rückgabe je nachdem
    ob if() war wird ändern

    2nd edit :jappa 😃 😃



  • PuppetMaster2k schrieb:

    Aber was du auch machen könntest wäre folgendes

    if(ChangeDisplaySettings(&dmScreenSettings,0)==DISP_CHANGE_SUCCESSFUL)
    {
       return true;
    }
    else
    {
       return false;
    }
    

    bitte nicht.

    ein
    return ChangeDisplaySettings(&dmScreenSettings,0)==DISP_CHANGE_SUCCESSFUL;

    ist viel schöner



  • return ChangeDisplaySettings(&dmScreenSettings,0)==DISP_CHANGE_SUCCESSFUL;

    ---- ja wie Einstein schon gesagt hat->
    wirklich richtig und gut ist es wenns einfach und "schön" ist

    🙂 😃



  • oh ah! ok ...

    Vielen dank für eure Beiträge .... ihr habt mir alle sehr geholfen!
    🙂

    schönen Tag noch

    cu all



  • Shade Of Mine schrieb:

    return ChangeDisplaySettings(&dmScreenSettings,0)==DISP_CHANGE_SUCCESSFUL;

    ist viel schöner

    Stimmt. Da hätte ich auch selber drauf kommen können... 🙂


Anmelden zum Antworten