Давайте так:

TYPE STRUCTURA:
STRUCT
b1:BYTE:=1;
b2:BYTE:=2;
w1:WORD:=65535;
b3:BYTE:=3;
cb4:BYTE:=4;
buff: ARRAY[1..30] TO BYTE;
size_buff:BYTE;
b4:BYTE:=5;
b5:BYTE:=6;
END_STRUCT
END_TYPE

var
S:STRUCTURA;(*Объявил структуру*)
x:byte:=0; (*для свитча*)
buff1: ARRAY [1..10] OF BYTE;(*Массив №1*)
buff2: ARRAY [1..20] OF BYTE;(*Массив №2*)
buff3: ARRAY [1..30] OF BYTE;(*Массив №3*)
POINT1:POINTER TO STRUCTURA;
i:BYTE;
end_var

CASE x OF:
1:S.size_buff=10;
FOR i:=1 TO 10 DO
S.buff[i]:=buff1[i];
END_FOR
2:S.size_buff=20;
FOR i:=1 TO 20 DO
S.buff[i]:=buff1[i];
END_FOR
3:S.size_buff=30;
FOR i:=1 TO 30 DO
S.buff[i]:=buff1[i];
END_FOR
END_CASE;

POINT1:=ADR(S);

SysSockSend(Socket,POINT1,SIZEOF(POINT1^),0);

А на выходе смотреть размер массива и сам массив.