hab jetzt grad nicht die Zeit/Möglichkeit hier auch noch etwas zu testen, aber versuch du doch erstmal dieses in TCustomPipe.readData:
Delphi-Quellcode:
self.cleanBuffer();
if dataCount > Length(self.FBuffer)
then
Raise Exception.CreateFmt('
FBuffer ist zu klein (%d < %d)',
[Length(self.FBuffer), dataCount]);
ReadFile(self.getHandle(), self.FBuffer, dataCount, dataRead,
nil);
dataCount := self.dataAvailable();
PS: du hast in der Prozedur zwar den Parameter data definiert, weißt diesem aber nix zu
und es ist schon etwas "unökonomisch", wenn innerhalb der Leseschleife vor jede und nach jedem Lesedurchgang der Puffer neu erstellt und wieder freigegeben wird (wenn dieser eine feste Größe hat, dann reicht es doch auch vor/nach der Schleife und nicht immer wieder innerhalb Dieser)