Pointer in CoDeSys V3

sysV3
2012-04-25
2024-01-31
  • sysV3 - 2012-04-25

    Ich habe folgendes Problem. Ich verwende einen Pointer und bekomme beim Übersetzen keine Fehlermeldung. Sobald ich aber
    in den Online-Modus gehe, kommt ein Ausnahmefehler und die Steuerung bleibt an der Stelle des Pointeraufrufes stehen.

    Das Beispiel:
    TYPE Test
    STRUCT

    gruen: Bool;

    end_struct
    End_type

    In meiner Funktionblock "Farbe" ist folgendes deklariert:

    Funktion_Block Farbe
    Var
    pt:POINTER TO test;
    gelb:bool:=false;
    end_Var

    Code:

    pt^.gruen:=false;// Steuerung bleibt hier stehen!!!!

     
  • singleton - 2012-04-26

    Zuweisungen auf nicht initialisierte Pointer sind keine gute Idee

    Du musst den Pointer erst initialisieren:

    TYPE Test
    STRUCT
    gruen: Bool;
    end_struct
    End_type
    
    Funktion_Block Farbe
    Var
    pt:POINTER TO test;
    stTest : Test;
    gelb:bool:=false;
    end_Var
    

    Code:

    pt := ADR(stTest); // Pointer initialisieren
    pt^.gruen:=false;// Steuerung sollte nicht mehr stehen bleiben!
    
     

Log in to post a comment.