No especificaste el componente que estas utilizando, pero creo que la mayoría de los mismos retorna en un puntero los datos recividos... en tal caso lo que debes hacer es guardar el paquete en uns estructura y acceder a los datos desde el tercer miembro del mismo.
Código Delphi
[-]procedure TForm1.UdpSocket1Receive(Sender: TObject; Buf: PAnsiChar; var DataLen: Integer);
type
PStruct = ^TStruct;
TStruct = record
id, Size: Cardinal;
Data: ShortString;
end;
begin
ShowMessage(PStruct(Buf)^.Data);
end;
dependiendo del componente tambien pedes leer del buffer primero los 8 bytes y luego el resto;
Código Delphi
[-]procedure TForm1.Button1Click(Sender: TObject);
var Buffer: array [0..255] of Char;
begin
UdpSocket1.ReceiveBuf(Buffer, 8); UdpSocket1.ReceiveBuf(Buffer, SizeOf(Buffer));
...
Saludos