Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Problem mit REFERENCE Ãœbergabe

guerillero
2013-01-10
2013-02-25
  • guerillero - 2013-01-10

    Hallo,

    Ich schon wieder.

    Ich versuch eine Referece an eine andere Reference zu übergeben

    Das Klappt eigentlich auch ganz gut.

    PROGRAM TinyTestTerritory
    VAR
       TestReal1: REAL;
       TestReal2: REAL;   
       RefereceTest1: REFERENCE TO REAL;
       RefereceTest2: REFERENCE TO REAL;
    END_VAR
    RefereceTest1 REF= DummyRealTest1;
    RefereceTest2 REF= RefereceTest1;
    DummyRealTest2:=RefereceTest2;
    

    Sobald ich das aber über Objekteigenschaften versuche

    ParameterTest.DecimalPointAccess:=TestInt1;
    ParameterPointerTest.DecimalPointAddress REF= ParameterTest.DecimalPointAddress;
    TestInt2:=ParameterPointerTest.DecimalPointAccess;
    

    bekomme ich eine Fehlermeldung

    [FEHLER] OLV-EVB-V15_MP_V005: TinyTestTerritory smart9_Family: SPS-Logik: Application: C0141: Referenzzuweisung benötigt eine Variable mit Schreibzugriff

    Beide eigenschaften sind vom Typ REFERENCE TO INT

    Kann mir jemand sagen woran das leigt?

     
  • RobiHerb - 2013-02-25

    Der Unterschied eines Pointers zu einer Referenz ist im Prinzip, dass die Referenz konstandt auf eine Adresse zeigt, ein Pointer aber flexibel ist und im Prinzip auf jede Adresse zu jeder Zeit gelegt werden kann (Zuweisung oder Arithmetik).

    Eine Referenz wird einmalig (vom Kompiler kontrolliert am Anfang) initialisiert und der Kompiler verhindert, dass jemand an dieser Adresse danach noch einmal dreht (schreibt).

     

Log in to post a comment.