POU: CheckPointer
Überwachungsfunktion Checkpointer für Pointer
Verwenden Sie die Funktion, um den Speicherzugriff von Pointern während der Laufzeit zu überwachen. Im Unterschied zu anderen Überwachungsfunktionen existiert für die Implementierung von CheckPointer
kein standardmäßiger Vorschlag; eine Implementierung ist vom Benutzer selbst vorzunehmen!
Die Funktion CheckPointer
soll überprüfen, ob der übergebene Pointer auf eine gültige Speicheradresse verweist und ob die Ausrichtung des referenzierten Speicherbereichs zum Typ der Variablen passt, auf die der Pointer verweist. Sind beide Bedingungen erfüllt, so wird der Pointer selbst zurückgegeben. Anderenfalls sollte die Funktion eine angemessene Fehlerbehandlung durchführen.
Achtung
Um die Funktionalität der Überwachungsfunktionen zu erhalten, dürfen Sie den Deklarationsteil nicht verändern. Als einzige Ausnahme dürfen Sie lokale Variablen hinzufügen.
Wichtig
Für den THIS
-Pointer und den SUPER
-Pointer findet kein impliziter Aufruf der Überwachungsfunktion statt.
Wichtig
Die Funktion Checkpointer wirkt ab Compiler Version 3.5.7.40 auch auf Variablen vom Typ REFERENCE
in gleicher Weise wie auf Pointervariablen.
Deklaration:
// Automatically generated code: DO NOT EDIT FUNCTION CheckPointer : POINTER TO BYTE VAR_INPUT ptToTest : POINTER TO BYTE; iSize : DINT; iGran : DINT; bWrite: BOOL; END_VAR
Implementierung (unvollständig!):
// Not a standard implementation. Insert your code here. CheckPointer := ptToTest;
ptToTest
: Zieladresse des PointersiSize
: Größe der referenzierten Variable; der Datentyp voniSize
muss kompatibel sein zuINT
und den Größenbereich der Variablen abdeckeniGran
: Granularität der referenzierten Größe, also der größte in der referenzierten Variablen enthaltene nicht-strukturierte Datentyp; der Datentyp voniGran
muss kompatibel sein zuINT
bWrite
: Art des Zugriffs (TRUE
=Schreibzugriff,FALSE
=Lesezugriff); der Datentyp vonbWrite
mussBOOL
sein
Bei positivem Ergebnis der Überprüfung wird der unveränderte Eingabepointer zurückgegeben (ptToTest
).