Skip to main content

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.

Beispiel 538. Vorlage

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;
. Beim Aufruf werden der Funktion folgende Eingabeparameter übergeben:
  • ptToTest:  Zieladresse des Pointers

  • iSize:  Größe der referenzierten Variable; der Datentyp von iSize muss kompatibel sein zu INT 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 von iGran muss kompatibel sein zu INT

  • bWrite: Art des Zugriffs ( TRUE=Schreibzugriff, FALSE=Lesezugriff); der Datentyp von bWrite muss BOOL sein

Bei positivem Ergebnis der Überprüfung wird der unveränderte Eingabepointer zurückgegeben (ptToTest).