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.