Überwachungsfunktion Checkpointer für Zeiger
Verwenden Sie die Funktion, um den Speicherzugriff von Zeigern 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 Zeiger auf eine gültige Speicheradresse verweist
und ob die Ausrichtung des referenzierten Speicherbereichs zum Typ der Variablen passt,
auf die der Zeiger verweist. Sind beide Bedingungen erfüllt, so wird der Zeiger selbst
zurückgegeben. Anderenfalls sollte die Funktion eine angemessene Fehlerbehandlung
durchführen.




VORSICHT

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.




HINWEIS

Für den THIS-Zeiger und den SUPER-Zeiger findet kein impliziter Aufruf der Überwachungsfunktion statt.




HINWEIS

Die Funktion „Checkpointer“ wirkt ab Compiler Version 3.5.7.40 auch auf Variablen vom Typ REFERENCE
in gleicher Weise wie auf Zeigervariablen.
Vorlage
Deklaration:
// Automatisch erzeugter Code: NICHT EDITIEREN FUNCTION CheckPointer : POINTER TO BYTE VAR_INPUT ptToTest : POINTER TO BYTE; iSize : DINT; iGran : DINT; bWrite: BOOL; END_VAR
Implementierung (unvollständig!):
// Keine Standardimplementierung. Bitte fügen Sie Ihren Code hier ein. CheckPointer := ptToTest;
Beim Aufruf übergibt CODESYS der Funktion folgende Eingabeparameter:
-
ptToTest
: Zieladresse des Zeigers -
iSize
: Größe der referenzierten Variable; der Datentyp voniSize
muss kompatibel sein zuINT
und den Größenbereich der Variablen abdecken -
iGran
: 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 Eingabezeiger zurückgegeben
(ptToTest
).