VCL Objekt einem gleichtypigen in einer Klasse zuweisen



  • Hallo Ihrs,

    also folgendes.
    Alles im Borland Builder 6.
    Ich habe per IDE ein Obekt "lbTableFileNames" vom Typ TListBox dem Form hinzugefügt.
    Nun habe ich in einer Klasse "MergeClass" ein Pointer "FileListBoxObj" vom Typen TListBox erstellt. Nun will ich im Lauf dem Pointer "FileListBoxObj" das Obj. "lbTableFileNames" zuweisen, so dass ich ebend dieses Obejt als Ausgabe bzw. Auswahl verwenden kann.
    Das ganze, dachte ich, wäre equivalent dem (an standard C Libs angeleht):

    Class foobar { ...; string *Name; ... };
    Halt eine klasse deklarieren mit einem stringpointer.
    Dann im Lauf einem aus Klasse foobar erstelltem Objekt über
    obj.Name = &IrgendeinString;
    Über dieses kann ich dann in der Klasse auf den String zugreifen.

    Ähnlich dachte ich mir das ebend auch im VCL.
    Bekomme aber einen Addresszugriffsfehler.

    //Code für den Klickbutton
    void __fastcall TForm1::btAddFileClick(TObject *Sender)
    {
          //TListBox Objekt ist "lbTableFileNames";
         TableMergeObj->RegisterListBoxObj(lbTableFileNames);
    }
    
    //Die Klasse (in extra unit)
    class MergeClass
    {
           public:
            bool RegisterListBoxObj(TListBox *__Obj);
    
          private:
            TListBox     *FileListBoxObj;
    };
    
    bool MergeClass::RegisterListBoxObj(TListBox *__Obj)
    {
         if(__Obj != NULL)
                 FileListBoxObj = __Obj; //hier die Zugriffsverletzung
    }
    


  • Hast Du TableMergeObj denn ordentlich mit new erstellt?

    Gruß,

    Alexander


Anmelden zum Antworten