__DELETE

提示!

由于编译原因编译器的版本必须 >= 3.3.2.0.

__DELETE 操作分配对象内存此内存是之前通过 “__NEW” 操作创建的。 __DELETE 没有返回变量并且经过操作之后操作数将会被设置为 0 。

注意选项“动态内存分配”必须在应用程序 “动态内存设置”中激活!

语法:

__DELETE (<指针>)

如果pointer是一个指向功能块的指针,那么在指针被设置为NULL之前定义的方法 FB_Exit 将会被调用。

 

功能块示例:

FUNCTION_BLOCK FBDynamic

VAR_INPUT

in1, in2 : INT;

END_VAR

VAR_OUTPUT

out : INT;

END_VAR

VAR

test1 : INT := 1234;

_inc : INT := 0;

_dut : POINTER TO DUT;

neu : BOOL;

END_VAR

out := in1 + in2;

 

METHOD FB_Exit : BOOL

VAR_INPUT

bInCopyCode : BOOL;

END_VAR

__Delete(_dut);

 

METHOD FB_Init : BOOL

VAR_INPUT

bInitRetains : BOOL;

bInCopyCode : BOOL;

END_VAR

_dut := __NEW(DUT);

 

METHOD INC : INT

VAR_INPUT

END_VAR

_inc := _inc + 1;

INC := _inc;

 

PLC_PRG(PRG)

VAR

pFB : POINTER TO FBDynamic;

bInit: BOOL := TRUE;

bDelete: BOOL;

loc : INT;

END_VAR

IF (bInit) THEN

pFB := __NEW(FBDynamic);

bInit := FALSE;

END_IF

IF (pFB <> 0) THEN

pFB^(in1 := 1, in2 := loc, out => loc);

pFB^.INC();

END_IF

IF (bDelete) THEN

__DELETE(pFB);

END_IF