bitmap als rückgabewert



  • die suche hat leider nichts ergeben, vieleicht benutze ich auch einen falschen ausdruck

    ich versuche eine methode mit einem rückgabewert zu schreiben, ist ja auch eigendlich nicht schwer.
    nur ich will ein bitmap als rückgabewert haben also

    TBitmap TKlasse::Methode(void)
    {
    return Bitmap;
    }

    was muss ich in den kopf schreiben, bzw warum fkt das nicht
    ich bekomme immer einen fehler
    [C++ Fehler] UTGesicht.cpp(26): E2015 Mehrdeutigkeit zwischen 'TBitmap' und 'Windows::TBitmap'

    ich bin für jede hilfe dankbar, auch für suchbegriffe

    mfg fjk



  • Hallo

    Du hast vier Probleme.
    1. Der Compiler meldet eine Mehrdeutigkeit. Das mag nicht von dir verursacht sein, du must es aber trotzdem umgehen. Das machst du einfach indem du bei jedem TBitmap noch Graphics:: davor schreibst, um mit dieser Angabe des Namespaces die Unklarheit aus dem Weg zu räumen.

    2. Du kannst TBitmap nicht auf dem Stack anlegen, da es eine VCL-Klasse ist und (leider) dieser Beschränkung unterliegt. Du must also mit Pointern und dynamischer Speicherverwaltung arbeiten

    Graphics::TBitmap* TKlasse::Methode()
    {
      Graphics::TBitmap* Bitmap = new Graphics::TBitmap();
      //... mit Bitmap arbeiten
      return Bitmap;
    }
    

    Das bedeutet natürlich auch das du den reservierten Speicher außerhalb der Methode selber wieder freigeben must, wenn du das Bitmap nicht mehr brauchst.

    3. Bei Funktionen ohne Parameter solltest du kein void in die Klammern schreiben

    4. Das gehört ins Builder-Subforum. Deshalb wirst du bald verschoben.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • akari schrieb:

    3. Bei Funktionen ohne Parameter solltest du kein void in die Klammern schreiben

    Warum nicht? 😕



  • super danke hat wunderbar fkt,

    ich brauche aber nocheinmal eure hilfe,
    ich bin mir nicht sicher ob ein neuer thread dafür erforderlich ist, deswegen poste ich das einfach mal hier.

    wie kann ich eine anzahl von dateien, in meinem fall bilder, in einem ordner zählen. merkwürdiger weise finde ich nichts darüber?

    mfg flo



  • WebFritzi schrieb:

    akari schrieb:

    3. Bei Funktionen ohne Parameter solltest du kein void in die Klammern schreiben

    Warum nicht? 😕

    Weil das C-Standard ist. Im C++-Standard ist das nicht mehr vorgesehen. Ich weiß nicht, ob es nur geächtet ist, oder wirklich als Fehler definiert.

    FJK schrieb:

    wie kann ich eine anzahl von dateien, in meinem fall bilder, in einem ordner zählen. merkwürdiger weise finde ich nichts darüber?

    Soweit ich weiß, mußt Du wirklich mit FindFirst() etc die Verzeichnisse durchsuchen und alle Dateien mitzählen. Ob's noch einfacher geht, weiß ich nicht ...

    Gruß,
    Christian



  • danke
    also wenn ich das richtig verstehe muss ich das so machen

    while(FindFirst(Pfad, atribute, rückgabewert) == false) 
    {
     i++;
     FindClose();
    }
    

    atribute:

    Konstante Wert Beschreibung
    faReadOnly $00000001 Schreibgeschützte Datei
    faHidden $00000002 Versteckte Datei
    faSysFile $00000004 Systemdatei
    faVolumeID $00000008 Laufwerks-ID-Datei
    faDirectory $00000010 Verzeichnisdatei
    faArchive $00000020 Archivdatei
    faAnyFile $0000003F Beliebige Datei

    so ich denke mal:
    faAnyFile $0000003F Beliebige Datei
    das ist für mich richtig
    aber was bekomme ich für ein rückgabewert?
    und ist findclose an der richtigen stelle, oder muss das ausserhalb der schleife.

    würde auch die hilfe seite posten, aber ich weiß nicht ob ich das darf

    int i;
     TSearchRec sr;
    
     i = 0;
    
     while(FindFirst(EinPfad, faDirectory, sr)==0)
     {
      i++;
      FindClose(sr);
     }
    

    hab es bisjetzt so gelöst, nur zählt er sich tot oder er geht garnicht erst in die schleife, jenachdem was man für ein atribut genommen hat

    danke

    flo



  • Christian Sonder schrieb:

    WebFritzi schrieb:

    akari schrieb:

    3. Bei Funktionen ohne Parameter solltest du kein void in die Klammern schreiben

    Warum nicht? 😕

    Weil das C-Standard ist. Im C++-Standard ist das nicht mehr vorgesehen. Ich weiß nicht, ob es nur geächtet ist, oder wirklich als Fehler definiert.

    Jo, darum geht es mir. Wenn es nur "geächtet" ist, dann wäre dies mal wieder ein Dogma - völlig unbegründet und nur existent, da einige Leute sowas einfach nicht sehen mögen. An solche Vorgaben halte ich mich grundsätzlich nicht.



  • geht mich zwar nichts an, aber warum sollte man mehr schreiben als nötig ist ? nur weil man sich an Vorgaben nicht halten will ? oder welchen Vorteil sollte dies bringen ? Umgekehrt würde es ja Sinn machen, wenn man dadurch etwas einsparen kann, aber so, aber muß jeder selbst wissen.



  • OldMan00 schrieb:

    geht mich zwar nichts an, aber warum sollte man mehr schreiben als nötig ist ? nur weil man sich an Vorgaben nicht halten will ?

    Vorgaben sollten Sinn machen. Es gibt vielleicht Leute, die ein void in Klammern besonders schön finden - was weiß ich...



  • also ich habe das mal so gelernt das man in der deklaration ein void setzt, wenn man kein übergabe oder rückgabewert hat.

    könnt ihr mir bitte nochmal FindFirst erklären?

    mfg flo



  • FJK schrieb:

    ich bin mir nicht sicher ob ein neuer thread dafür erforderlich ist

    Die Faustregel lautet: ein Thema pro Thread, ein Thread pro Thema.

    Zu FindFirst liefert die Suchfunktion des Forums etliche Beispiele.



  • hat fkt

    danke

    mfg flo


Anmelden zum Antworten