Dynamisch erzeugte Objekte aus Funktion aufrufen



  • Hallo,

    ein weiteres Problem - ich erzeuge zur Laufzeit Images. Über img[i]->Width usw. kann ich diese auch ansprechen. Aber nicht aus einer eigenen Funktion heraus. Wie kann ich das machen ?



  • Hallo

    Indem du das Array img als Member des Forms deklarierst, dann kannst du es auch aus allen anderen Methoden der Form ansprechen.
    Das sind Grundlagen der Objektorientierten Programmierung, Stichwort Gültigkeit und Sichtbarkeit.

    bis bald
    akari



  • Hallo,

    was meinst Du als Member in der Form ? Ich habe TImage *img[100]; global deklariert (vor TfrmMain *frmMain; und vor der ersten Funktion __fastcall TfrmMain::TfrmMain(TComponent* Owner)
    : TForm(Owner)
    {
    })



  • Hallo

    Member heißt das die Deklaration in die Header-Datei des Forms in den private-Bereich verlegt werden soll. Du solltest dir unbedingt ein ordentliches Tutorial zum Thema OOP wie dieses hier durchlesen, sonst kommst du mit der VCL des Builders nicht weit.

    Wenn du einfach nur eine schnelle Lösung suchst dann must du nur die reine Deklaration des Arrays ohne Initialisierung in den Header außerhalb der Formklasse kopieren und vorneweg ein extern davorschreiben :

    // Form1.h
    #ifndef ...
    #include ...
    
    extern TImage* img[10]; // Nur Deklaration
    
    class TForm1 ...
    {
    };
    

    Nun kannst du das Array von überall aus deinem Projekt heraus ansprechen, solange du nur den Form1-Header deklarierst. Aber das ist eine sehr schlechte Variante, da man als vorausschauender Programmierer globale Variablen vermeidem sollte.

    bis bald
    akari


Anmelden zum Antworten