Pointer: ‎THIS‎ Permalink

‎THIS‎ işaretçisi, nesne yönelimli programlama için kullanılan özel bir değişkendir.

‎THIS‎ bir fonksiyon bloğunun kendi fonksiyon bloğu örneğine işaretçisidir. Her fonksiyon bloğu için otomatik olarak bir ‎THIS‎ işaretçisi mevcuttur. ‎THIS‎ adresini yalnızca yöntemlerde ve fonksiyon bloklarında kullanabilirsiniz. ‎THIS‎ adresi, «Anahtar Kelimeler» kategorisindeki Giriş Asistanında uygulama için kullanılabilir.

İşaretçinin yeniden referanslanması: ‎THIS^‎

‎THIS‎ işaretçisinin kullanımı

  • Lokal bir değişken bir yöntemdeki bir fonksiyon bloğu değişkenini geçersiz kılıyorsa, fonksiyon bloğu değişkenini ‎THIS‎ işaretçisi ile ayarlayabilirsiniz. Aşağıdaki örneğe bakınız (1)

  • Fonksiyon bloğunun kendi fonksiyon bloğu örneğinin işaretçisine bir fonksiyonda kullanılmak üzere başvurulursa. (Aşağıdaki örneğe bakınız (2))

Örnekler

ST

‎THIS^.METH_DoIt();‎

FBD/CFC/LD

_cds_img_pointer_this.png

Örnek

‎iVarB‎ lokal değişkeni, ‎iVarB‎ fonksiyon bloğu değişkenini geçersiz kılar.

FUNCTION_BLOCK  fbA
VAR_INPUT
    iVarA: INT;
END_VAR
iVarA := 1;

FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
    iVarB: INT := 0;
END_VAR
iVarA := 11;
iVarB := 2;

    METHOD DoIt : BOOL
    VAR_INPUT
    END_VAR
    VAR
        iVarB: INT;
    END_VAR
    iVarB := 22;    // The local variable iVarB is set.
    THIS^.iVarB := 222;    // The function block variable iVarB is set even though iVarB is obscured.

PROGRAM PLC_PRG
VAR
   MyfbB: fbB;
END_VAR

MyfbB(iVarA:=0, iVarB:= 0);
MyfbB.DoIt();

Örnek

Bir fonksiyon çağrısı kendi örneğine referans gerektirir.

FUNCTION funA
VAR_INPUT
    pFB: fbA;
END_VAR
...;

FUNCTION_BLOCK  fbA
VAR_INPUT
    iVarA: INT;
END_VAR
...;

FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
    iVarB: INT := 0;
END_VAR
iVarA := 11;
iVarB := 2;

    METHOD DoIt : BOOL
    VAR_INPUT
    END_VAR
    VAR
        iVarB: INT;
    END_VAR
    iVarB := 22;    //The local variable iVarB is set.
    funA(pFB := THIS^);    //funA is called via THIS^.

PROGRAM PLC_PRG
VAR
    MyfbB: fbB;
END_VAR
MyfbB(iVarA:=0 , iVarB:= 0);
MyfbB.DoIt();

‎THIS‎ talimat listesi (IL) için henüz uygulanmamıştır.