Funktion_Aufruf



  • hallo
    ich habe folgende code in einem programm bekommen, aber der Aufruf der funktion "LoadFromBitmap" habe ich nicht verstanden!
    könnte mir jemand bitte das erklären bzw. kommentieren Danke sehr

    BYTE **b;
    int main()
    {
       if( !LoadFromBitmap( "bild.bmp", &b, &width, &heigth ) ) // !!!!??????
       return -1;
    
       -----
       .... usw.
    }
    
    bool LoadFromBitmap( char *szFile, BYTE ***array, int *width, int *heigth)
    {
       ....
    }
    


  • int main()
    {
       if( !LoadFromBitmap( "bild.bmp", &b, &width, &heigth ) )   // wenn LoadFromBitmap false zurückgibt 
         return -1;                                               // programm mit fehlercode -1 beenden
    
       -----
       .... usw.
    }
    


  • Die Funktion liesst (vermutlich) die Datei mit dem Dateinamen 'szFile' in das 2-Dimensionale Array 'array' und gibt dir ausserdem die Breite 'width' und Höhe 'height' zurück.

    zum Thema 2D Arrays gibts einen Beitrag in den FAQ.

    Wenn du's jetzt noch nicht verstehst, sag mal wo das Problem konkret liegt.

    // EDIT: Achja, die Farbwerte des Bildes liegen dann üblicherweise so im Speicher (afaik)
    0xffBBGGRR (Hexadezimal)
    RR ist der Rot-Wert, GG der Grün-Wert und BB der Blau-Wert.



  • hallo danke sehr
    ich habe noch 2 Fragen:
    1.
    godlikebot schrieb:

    Die Funktion liesst (vermutlich) die Datei mit dem Dateinamen 'szFile' in das 2-Dimensionale Array 'array' und gibt dir ausserdem die Breite 'width' und Höhe 'height' zurück.

    richtig! woher weisst du das?

    2.Frage:
    warum wurde der Aufruf der Funktion "LoadFromBitmap" mit "if" gemacht?
    gibt´s andere Alternativen?
    vielen Dank



  • Zu 2) Weil es keinen sinn macht das Programm weiter auszuführen wann das Laden der Bitmap nicht erfolgreich war.
    Kurt



  • cremesimo schrieb:

    richtig! woher weisst du das?

    Meine Glaskugel ;)...
    Naja, der Name der Funktion ist doch eindeutig. Die beiden letzten Parameter dienen offensichtlich (sind ja pointer) der Ausgabe der Höhe und Breite.
    Und ein pointer auf einen pointer auf einen pointer auf ein Byte ist nicht wirklich häufig zu finden und deutet (zumindest hier) auf einen pointer auf ein 2D Byte Array hin.

    2.Frage:
    warum wurde der Aufruf der Funktion "LoadFromBitmap" mit "if" gemacht?

    Ach, darauf wolltest du hinaus?! Wurde von ZuK doch schon beschrieben...
    Die Funktion gibt (vermutlich 😉 ) true (1) zurück, wenn sie das Bild laden konnte oder false (0) wenn nicht.
    Du könntest also auch schreiben:

    bool HatEsFunktioniert = LoadFromBitmap("bild.bmp", &b, &width, &heigth);
    if(!HatEsFunktioniert) // wenn es nicht funktioniert hat
    {
        // mach was...
    }
    

    oder:

    bool HatEsFunktioniert;
    if(!(HatEsFunktioniert = LoadFromBitmap("bild.bmp", &b, &width, &heigth))) // wenn es nicht funktioniert hat
    {
        // mach was...
    }
    

    oder eben:

    if(!LoadFromBitmap("bild.bmp", &b, &width, &heigth)) // wenn es nicht funktioniert hat
    {
        // mach was...
    }
    

Log in to reply