Man könnte den String natürlich auch als weiteres Subitem einfügen oder ein Array of String nehmen und dort die Strings einfügen.
Das sind auch die geplanten Alternativen wenn das nicht geht.
Delphi-Quellcode:
var
iRet: integer;
buf: array[0..MAX_CHAR] of char;
buf2: PChar;
...
begin
...
iRet := recv(RawSocket, buf, sizeof(buf), 0);
getmem(buf2, iRet);
copymemory(buf2, @buf, iRet);
( listdata := ListView1.Items.Add; )
listdata.Data := buf2;
...
end;
und...
Procedure Move(const source;var dest;count:SizeInt);