Отправка динамического массива (внутри записи) через сокет?

Я пытаюсь передать запись с сервера на клиент, напрямую используя .SendBuf ().

однако эта запись имеет член, который является динамическим массивом, и я где-то прочитал (здесь, в SOF), что при отправке записей члены должны быть STATIC (фиксированной длины), но проблема в том, что ... я не могу определить, как много аргументов я бы отправил (в будущем).

Как я могу решить эту проблему ?

procedure TServerClass.SendBufToSocket(const vmName: TVMNames; const vmArgs: Array of TValue);
var
  // this record is sent to client
  // vmName = method to be called [in]
  // vmArgs = Argument for the method [in, optional]
  BufRec: packed record
    vmName: array[0..49] of char;
    vmArgs: Array of TValue;
  end;

  s: string;
  i: integer;
begin
  // convert enum method name to string
  s:= GetEnumName(TypeInfo(TVMNames), Integer(vmName));

  // copy method name to record
  lstrcpy(BufRec.vmName, pChar(s));

  // copy arg array to record
  SetLength(BufRec.vmArgs, length(vmArgs));

  for i:=0 to high(vmArgs)
    do BufRec.vmArgs[i] := vmArgs[i];

  // send record
  ServerSocket.Socket.Connections[idxSocket].SendBuf(PByte(@BufRec)^, SizeOf(BufRec));
end;

Я узнал, откуда япрочитал это здесь:ReceiveBuf от TCustomWinSocket выигралработать с динамическими массивами для буфера

Ответы на вопрос(2)

Ваш ответ на вопрос