Object Inspector - Tag



  • Hi.

    Ich frag mich was schon ne lange Zeit. ^^
    Bei TEdit,TLabeledEdit etc.
    gibt's im Object Inspector wo man Name, Caption, Left, Top, Width etc. einstellen kann, gibts eine Option mit dem Namen "Tag".

    Wozu ist das?
    Was macht das?



  • DJ BlackEagle schrieb:

    Ich frag mich was schon ne lange Zeit.

    Und in der ganzen langen Zeit bist du nicht auf die Idee gekommen, mal in der Hilfe nachzusehen?



  • Die sagt mir das ich das in den Mülleimer werfen kann/soll. 😉
    Spaß beiseite.
    Da steht nur das Tag keine funktionalität hat im Programm.
    Man kann da nur nen 32-bit integer Wert sichern kann.
    z.B. ne Referenz oder nen Pointer.

    Aber ne Adresse besteht nicht nur aus Zahlen, die besteht aus 0-9 und A-F. A-F ist kein intger Wert. :|



  • Du schreibst es doch selbst:

    ne Referenz oder nen Pointer.

    Da kannst du dann deine Zeichen ablegen. TAG dient zur Aufnahme eines 32-Bit wertes oder eines Zeigers, der auf individuelle Daten zeigt, die du gerne zu deinem Object speichern möchtest. Manachmal sehr nützlich.



  • Christian211 schrieb:

    Da kannst du dann deine Zeichen ablegen. TAG dient zur Aufnahme eines 32-Bit wertes oder eines Zeigers, der auf individuelle Daten zeigt, die du gerne zu deinem Object speichern möchtest. Manachmal sehr nützlich.

    Wenn du ein Menü hast, das mehrere Male eine ähnliche Funktionalität anbietet (z.B. für ein Spiel: Schwierigkeitsgrad 1, 2, 3), kannst du, wenn du in Tag den Schwierigkeitsgrad schreibst, die OnClick-Events auf die gleiche Funktion setzen; über den übergebenen Zeiger (nachdem du ihn mindestens auf TComponent* gecastest hast) kann diese Funktion den Tag auslesen. Dadurch vermeidet man solche Konstrukte:

    void __fastcall TFrmMain::MnuLevel1Click(TObject *Sender)
    {
            SetLevel (1);
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TFrmMain::MnuLevel2Click(TObject *Sender)
    {
            SetLevel (2);
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TFrmMain::MnuLevel3Click(TObject *Sender)
    {
            SetLevel (3);
    }
    

    DJ BlackEagle schrieb:

    Aber ne Adresse besteht nicht nur aus Zahlen, die besteht aus 0-9 und A-F. A-F ist kein intger Wert. :|

    Ein Zeiger ist genauso eine Variable wie eine Integerzahl; auf 32-Bit-Systemen sind sie auch noch gleich groß, weshalb man in Tag auch einen Zeiger speichern kann.
    Eine Adresse ist zudem genauso eine Zahl wie jede andere auch - was du meinst, ist nur die häufig bei Zeigern im Debugger verwendete hexadezimale Darstellung dieser Zahlen.

    Moritz


Anmelden zum Antworten