Funktion liefert Array zurück...



  • Hallo Leute,

    Wenn ich eine Funktion habe will, die ein Array zurück liefert, um damit arbeiten zu können:

    char SaveBitmap(){
    
         //blablabla
    
     return *bmpContent;
    } //end function OpenBitmap
    

    so und bmpContent ist:

    char *bmpContent = new char[bmpSize];
    

    mit bmpSize, der Größe des Bildes.

    Nun versuche ich in der main den Inhalt zu kontrollieren:

    void main(){
    	cout << SaveBitmap();
    } //end main
    

    Aber er spuckt mir nur das erste Zeichen aus. Ich weiss, dass man den Inhalt am besten in einer Schleife ausliesst aber ich will nicht die bmpSize Global machen, damit ich die Laufzeit der Schleife bestimmen kann. Also meine Frage ist, ob ich die Funktion richtig deklariert habe und wie ich das genau kontrollieren kann 😕 .

    Dazu kann ich direkt fragen, wie man am besten Fehler in seinem Prog findet......Step-By-Step...oder kennt Ihr noch andere Wege nach ROM 😃



  • SaveBitmap gibt ja auch nur das erste Zeichen zurück. Eher so:

    char *SaveBitmap(){
    
         //blablabla
    
     return bmpContent;
    } //end function OpenBitmap
    

    BTW: cout wird dir nur die Zeichen bis zur ersten 0 ausgeben.



  • @Cocaine:
    Ok, er gibt jetzt die ersten 3 Zeichen aus aber warum? Du hast aus der Fkt einen Zeiger gemacht, der jetzt auf bmpContent zeigt und warum gerade diesen Weg? Mein Problem ist auch, dass ich chars zurück bekomme aber wie kann ich den Hex wert bekommen bzw. den Integerwert?
    Mit:

    for (int i=0; i<bmpSize; i++){        
    	bmpContent[i] = fgetc (bmpFile);				
    } // end for
    

    ...lese ich den Inhalt ins Array. Aber ich brauche die Hex-Werte oder die Integer-Werte. 😞

    Vielen Dank schon einmal für Deine Hilfe 🙂



  • Scorn schrieb:

    Du hast aus der Fkt einen Zeiger gemacht, der jetzt auf bmpContent zeigt und warum gerade diesen Weg? Mein Problem ist auch, dass ich chars zurück bekomme aber wie kann ich den Hex wert bekommen bzw. den Integerwert?

    Häh? Die Funktion liefert einfach einen Zeiger auf dein char-Array zurück und nicht nur einen einzelnen char wie vorher. Für deine Zwecke dürfte das noch nicht langen, aber aus deinem ersten Beitrag kann man ja nicht viel sehen (zumal auch nur sehr wenig Code dasteht). Sinnvoll wäre es, wenn du noch die Größe des Bitmaps in Bytes zurückgibst und dann eine Funktion schreibst, die dir diese Daten formatiert ausgibt.

    Was meinst du mit "Hexwert bekommen"? Du hast die binären Bitmap-Daten eingelesen und gibst sie halt aus. Hex, dezimal etc. sind doch nur Schreibweisen und 0xff ist das gleiche wie 255 dezimal (oder halt -1 mit Vorzeichen).


Anmelden zum Antworten