-> Hier kostenlos registrieren
Guten Abend,
ich habe einen FB1 der aus dem OB1 aufgerufen wird und als VAR_IN_OUT ein Array of "Struct" übergeben bekommt. Dies funktioniert auch soweit. nun würde ich diese Array gerne aus dem FB an ein weiteres (untergeordneten) FB2 weitergeben.
Als VAR_INPUT ist dies auch möglich als VAR_IN_OUT jedoch nicht dafür muss ich im FB1 erst eine lokale Kopie erzeugen die an FB2 übergeben und danach in das Eingangarray im FB1 zurückkopieren um die Änderungen aus FB2 im Eingangs Array des FB1 zu haben.
Gibt es hierfür eine elegantere Lösung?
OB1
FB1:
FB2:
Was genau passiert denn bei der Array Übergabe und bei der Zuweisung im FB1?
Werden die Inhalte kopiert oder Pointer gesetzt dazu habe ich leider noch keine gute Erlärung gefunden.
ich habe einen FB1 der aus dem OB1 aufgerufen wird und als VAR_IN_OUT ein Array of "Struct" übergeben bekommt. Dies funktioniert auch soweit. nun würde ich diese Array gerne aus dem FB an ein weiteres (untergeordneten) FB2 weitergeben.
Als VAR_INPUT ist dies auch möglich als VAR_IN_OUT jedoch nicht dafür muss ich im FB1 erst eine lokale Kopie erzeugen die an FB2 übergeben und danach in das Eingangarray im FB1 zurückkopieren um die Änderungen aus FB2 im Eingangs Array des FB1 zu haben.
Gibt es hierfür eine elegantere Lösung?
OB1
Code:
[INDENT]CALL "FB1" , "DB1"
arr1:="DB".M // Struct mit Array of Sruct in Variable M
[/INDENT]
FB1:
Code:
[INDENT]VAR_IN_OUT
arr1: ARRAY[0..6] OF "Struct";
END_VAR
VAR
arr2: ARRAY[0..6] OF "Struct";
END_VAR
BEGIN
arr2 := arr1;
FB2.DB2(arr2 := arr2)
arr1 := arr2;
END_FUNCTION_BLOCK
[/INDENT]
FB2:
Code:
[INDENT] VAR_IN_OUT
arr2: ARRAY[0..6] OF "Struct";
END_VAR
arr2.element := 1;[/INDENT]
Was genau passiert denn bei der Array Übergabe und bei der Zuweisung im FB1?
Werden die Inhalte kopiert oder Pointer gesetzt dazu habe ich leider noch keine gute Erlärung gefunden.