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!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
[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?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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!
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.
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?
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