Was aber wenn Datasize=2000 aber es sind nur 1496 Bytes im Puffer?
Dann werden bei ReadBytes auch nur 1496 Bytes gelesen.
ReadBytes blockiert bis die gewünschte Anzahl Bytes gelesen wurde, oder ein TimeOut auftritt.
procedure ReadBytes(var VBuffer: TIdBytes; AByteCount: Integer; AAppend: Boolean = True); virtual;
ist eine Prozedur, daher ist der Rückgabewert unproblematisch.
Aber der dritte Parameter ist verdächtig: wenn VBuffer bereits Daten enthält, werden neue Daten angehängt.
Nach ReadBytes sollten die Daten doch bereits in Data stehen, was macht dann diese Zeile?
Move(Data[0], PByte(Value), SizeOf(Integer));