Zugriff auf Variable in anderer Unit



  • so ich bins schon wieder 🙄

    also in meinem programm habe ich mehrere Units.
    nun möchte ich z.b. in Unit 1 auf eine Variable von Unit 2 zugreifen, nur bringe ich das wieder mal nicht fertig da ich keine ahnung habe wie ich das anstelle.

    hab zwar im FAQ das thema "Variablenübergabe an andere Form" gelesen, doch irgendwie hab ich das überhaupt nicht kapiert...

    kann mir in dem fall noch irgendwie helfen ?



  • so direkt geht das meines wissens nach nicht ... also sowas wie Form2->var gibt es nicht. was du machen kannst is in unit2 eine funktion definieren und die dann in unit1 aufrufen. so genau weiß ich zwar jetzt nich wie das geht aber du kannst in unit1 z.B. das onClose event von TForm2 aufrufen ... da müsste sich doch was machen lassen wenn man statt onClose einfach eine eigene funktion nimmt

    mfg


  • Mod

    Hallo

    was verstehst du denn nicht an dem Beitrag ?
    Zugriff ueber Properties oder den ersten Beitrag
    hast du dir das mal genau angeschaut und ausprobiert
    ein wenig Spielen hilft da meist weiter

    MfG
    Klaus



  • zugriff über properties.

    ich habs auch mal probiert aber ich habs nicht hingebracht...

    habs jetzt halt mal so gemacht wie BW vorgeschlagen hat.



  • Ich nehme jetzt mal an, dass Deine beiden Units Formulare darstellen. Wenn es anerst ist funktioniert folgendes nicht:

    Soweit ich mich erinnere funktioniert das so:
    Du inkludierst den Header von Unit2 in Unit1. Dann kannst Du in Unit1 über Form2->variablenName auf die entsprechenden Membervariablen bzw. über Form2->methodenName(parameterliste) auf die entsprechenden Methoden zugreifen. Das setzt natürlich voraus, dass alles was Du so ansprichst als public deklariert ist.



  • KnownUnknown schrieb:

    Das setzt natürlich voraus, dass alles was Du so ansprichst als public deklariert ist.

    Wobei man sich vorher den Artikel in der FAQ zum Thema Public-Variablen durchgelesen haben sollte...

    @Gazmo:

    hab zwar im FAQ das thema "Variablenübergabe an andere Form" gelesen, doch irgendwie hab ich das überhaupt nicht kapiert...

    So eine Aussage ist etwa so nützlich wie wenn jemand kommentarlos www.google.ch postet...

    Ergötze uns doch an Details was du nicht verstanden hast. So kann man daraus auch lernen und sehen wo Usern der Schuh wirklich drückt. Was nutzt es, hilfe anzubieten, wenn man gar nicht weiss, wo eigentlich das Problem steckt?

    -junix



  • @KnownUnknown

    Vielen Dank, so wie es du beschrieben hast funktioniert es bestens!

    @junix

    Ja ich weiss, meine Beschreibung ist voll scheisse, sorry dass ich so eure zeit verschwende.

    ich weiss nicht wie ichs sagen soll wo das problem liegt. als ich den beitrag im FAQ gelesen habe, kam ich einfach hinten und vorne nicht draus, ich bin wohl einfach zu blöd um zu programmieren. ich könnte ja nicht mal die unterschiede zwischen c und c++ nennen.



  • GaZmo schrieb:

    ich weiss nicht wie ichs sagen soll wo das problem liegt. als ich den beitrag im FAQ gelesen habe, kam ich einfach hinten und vorne nicht draus,

    Dann fang mal damit an WO DU NICHT DRAUSGEKOMMEN BIST! Das ist wie früher ind er Schule. Wenn du dem Lehrer sagst "ich schnalls nicht" kann er dir auch nicht wirklich weiter helfen.

    -junix



  • //  Unit1.h 
    private: 
      int Zaehler; 
    
    // Unit2.h 
    private: 
      int fZaehler; 
    protected: 
      void __fastcall SetZaehler(int); 
    public: 
      __property int Zaehler = {read = fZaehler , write = SetZaehler}; 
    
    // Irgendwo in Unit1.cpp 
    // (nicht vergessen, Unit2.h mit einzubinden) 
    Form2->Zaehler = Zaehler; 
    Form2->Show(); 
    
    // Unit2.cpp 
    void __fastcall TForm2::SetZaehler(int zaehler) 
    { 
       fZaehler = zaehler; 
       // und möglicherweise noch anderes Zeugs
    

    beispielsweise diese zeile...

    ...
    public: 
      __property int Zaehler = {read = fZaehler , write = SetZaehler}; 
    ...
    

    ... kapiere ich überhaupt nicht, also was "{read = fZaehler , write = SetZaehler}" bedeutet



  • Was sagt denn wohl die Hilfe über __property?



  • sorry, aber aus der Hilfe dazu werde ich kein bisschen schlauer.

    ich kapiere weder wozu das gut sein soll, noch wie ich das richtig anwende.

    naja ich will dich nicht weiter stören und mache jetzt besser feierabend.



  • Kurz zusammenfassend:
    Property sagt dem Compiler welche Get- bzw. Setmethoden er bei einem Zugriff auf die Eigenschaft aufrufen soll.

    -junix


Anmelden zum Antworten