Erklärung des FAQ Themas "Variablenübergabe an andere Form"
-
Wer kann mir das FAQ Thema "Variablenübergabe an andere Form" erklären?
<edit>Statt fett wären die Code-Tags hier eher angebracht gewesen. Ausserdem ist das Zitat völlig witzlos, wenn du unten sowieso die Zeilen aufführst...</edit>
Es gibt eine Variable Zaehler in Form1
In Form2 gibt es die Variable fZaehlerwas bedeuten die Zeilen:
protected: void __fastcall SetZaehler(int); public: __property int Zaehler = {read = fZaehler , write = SetZaehler};
warum wird hier Zaehler aufgerufen und nicht fZaehler ?
// Irgendwo in Unit1.cpp // (nicht vergessen, Unit2.h mit einzubinden) Form2->Zaehler = Zaehler; Form2->Show();
<edit>bitte Code-Tags benutzen!</edit>
[ Dieser Beitrag wurde am 02.06.2003 um 11:36 Uhr von junix editiert. ]
-
protected: void __fastcall SetZaehler(int); //Funktionsdeklaration public: __property int Zaehler = {read = fZaehler , write = SetZaehler}; //Eigenschaft
Die Funktion SetZaehler dürfte ja selbsterklärend sein...
Sie setzt den übergebenen Wert in die Variable fZaehler.Bei der Eingeschaft wird einfach das Verfahren beim lesen und beim schreiben der Variable deklariert.
Beim lesen gibt sie den Wert in fZaehler zurück.
Beim schreiben ruft sie die Funktion SetZaehler auf die ja einen int Wert als Parameter erwartet.
Da kannst du dann schön abprüfen ob dir jemand Müll in die Variable stellen will.fZaehler kannst du in der Unit1 nicht aufrufen.. schliesslich ist die Variable private.
Scheinbar übergibt er da die private Variable Zaehler der Unit1 an die public Variable Zaehler der Unit2... das führt dazu, dass SetZaehler aufgerufen wird und die Funktion setzt dann den übergebenen Wert in die private Variable fZaehler.Langer Satz... *puh*
Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt.
-
Original erstellt von <Mike>:
[...bis hier alles richtig...]Scheinbar übergibt er da die private Variable Zaehler der Unit1 an die public Variable Zaehler der Unit2... [...hier wieder richtig]das ist nicht ganz korrekt. Zaehler ist keine Public-Variable sondern eine Eigenschaft (__property). Also nichts weiter als ein Versteck für den Aufruf von SetZaehler().
__property stellt keinen Speicher zur verfügung, das muss der Programmier nach wie vor besorgen (eben hier z.B. FZaehler).
-junix
-
Oops.. danke junix... wer lesen kann ist klar im Vorteil.
Sorry