ttreeview knoten wert zuordnen



  • Hallo ich habe ein formales Problem mit der TTreeview komponente
    ich will jedem Knoten einen Zahlenwert zuordnen, den ich z.b. in einer datenbank speichere.
    Nun frage ich mich wie ich die einzelnen Knoten identifiziere könnte. Zuerst dachte ich, dass ich sie vielleicht über ihre Position im Baum ansprechen könnte, aber die ändert sich ständig wenn neue Knoten dazukommen oder die vorhandenen sortiert werden.
    Dann dachte ich, ich könnte ein Array mit Zeigern auf die Knoten erstellen, aber das wäre nur zur Laufzeit vorhanden. Ich möchte, dass die Verbindung Knoten<->Wert quasi immer erhalten bleibt.
    Wie könnte ich das am geschicktesten machen?



  • Hallo

    Du kannst der Eingenschaft TTreeNode::Data einen beliebigen Pointer oder Interger-Wert zuweisen, und damit jeden Knoten nach deinem eigenen System identifizieren.

    bis bald
    akari



  • ah okey danke 🙂



  • hmm Ich hab den Umgang mit der Data-property noch nicht ganz verstanden.
    Das Beispiel in der Hilfe bringt mich nur bedingt weiter.
    Irgendwo im Internet habe ich gelesen \\"Data\\" könnte nur Pointer aufnehmen.
    Stimmt das und wenn ja wie kann ich auf den zugewiesenen Pointer zugreifen.
    Mein naiver Ansatz

    int okey = *(pNode->Data);
    

    ging gleich in die Hose

    Da ich eh nur IntegerWerte brauche könnte ich dann nicht den Pointer auf die Adresse richten, die meinem Wert entspricht und dann \\"Data\\" zuweisen. Da hab ich auch so was gelesen 😕



  • harharhar ich denke ich habs

    pNode->Data = (int*)4565;
    ShowMessage(int (pNode->Data));
    

    das funktioniert zumindest.
    Ist das so richtig oder löse ich damit nach einiger Zeit irgendwelche Fehler aus?



  • Hallo

    technisch gesehen passiert genau das was du willst und richtig ist.
    Aber die Syntax ist noch zu C-Stylig, in C++ gibts dafür spezielle Casts

    pNode->Data = reinterpret_cast<void*>(4565);
    ShowMessage(reinterpret_cast<int>(pNode->Data));
    

    bis bald
    akari



  • okey prima werd ich gleich ändern
    wenn schon denn schon


Anmelden zum Antworten