Properties verlieren Wert

lut
2010-11-10
2010-11-24
  • lut - 2010-11-10

    Hallo zusammen,
    ich habe einen Klassen-FB mit einer int-Property zaehlwert versehen und möchte dort einen Wert speichern und in einer Methode count des FB benutzen. Der erste lesende Zugriff in der Methode liefert richtig den Property-Wert, der zweite lesende Zugriff (im selben Aufruf!) führt zum Rücksetzen auf 0:

    IF upTakt AND NOT upTaktMerker THEN
    zaehlwert := zaehlwert + 1 ; // bei Zählflanke inkrementieren
    END_IF
    upTaktMerker := upTakt ;
    count:= zaehlwert; // Rückgabewert

    Nachdem ich nun über eine lokale Variable der Methode arbeite, läuft die Wertverwendung zunächst richtig.

    zw_lokal:= zaehlwert;
    IF upTakt AND NOT upTaktMerker THEN
    zw_lokal := zw_lokal + 1 ;
    END_IF
    upTaktMerker := upTakt ;
    zaehlwert:= zw_lokal;
    count:= zw_lokal;

    Leider ist nun der Propertywert nach Wiederaufruf der Methode wiederum auf 0 gesetzt.
    Was mache ich falsch? Hat eine Property kein speicherndes Verhalten?
    Vielen Dank vorab für Eure Hinweise!

     
  • Ralph Holz - 2010-11-11

    Das gehört sich so! Properties verhalten sich genauso wie Funktionen. Du musst die Variable im FB Deklarationsteil deklarieren und schon behält sie ihren Wert, da sie instanziert wird.

     
  • lut - 2010-11-11

    Danke erstmal!

    [quote="Ralph Holz"]Das gehört sich so! Properties verhalten sich genauso wie Funktionen. Du musst die Variable im FB Deklarationsteil deklarieren und schon behält sie ihren Wert, da sie instanziert wird.[/quote]

    Ich hatte die Property als Eigenschaft des FB verstanden, unter dem sie angesiedelt ist. Bei C++ wäre sie ein Datenelement einer Klasse, z.B. im private-Bereich.
    Wenn sie ihren Wert nicht speichert, was machen dann die Get/Set-Methoden für einen Sinn? Was macht dann eine Property überhaupt für einen Sinn, wenn ich gleich mit einer FB-Variablen arbeiten kann?

     
  • Pitsch - 2010-11-24

    Hallo

    Eine Property, ist doch nur eine Zugangspforte, um einen kontrolierten Zugriff auf eine oder mehrere Private Klassen-Member (Variablen) zu gewährleisten. Schreiben und lesen. Schreiben, oder lesen unter bestimmten Bedingungen. Oder nur schreiben, oder nur lesen. Eine Property ist eine Hilfsfunktion und keine Variable im eigentlichen Sinne des Wortes.

    Mit freundlichen Grüssen! Pitsch

     

Log in to post a comment.