Если ваш вопрос о том, что передать как «буфер». Вы можете передать все что угодно.
Если вы передаете указатель, вы должны разыменовать его. Например, когда вы звоните nl Read
Procedure read;
Type
TChunk = record
data: pointer;
datasize: NLint;
End;
Var
Chunk: TChunk;
Const
IdealReadSize = 1024;
Begin
GetMem( Chunk.data, IdealReadSize);
Try
Chunk.datasize := nlRead( YourSocket, Chunk.data^, IdealReadSize );
// Chunk.datasize hold the count of bytes which have been effectively read
// (maybe less than 1024 in case of an error)
// do something with your chunk
Finally
Freemem( Chunk.data, IdealReadSize );
End;
End;
Это тот же подход, что и процедура TStream.Read ().