Dein Verfahren ist grundsätzlich richtig, da man dafür eine Endlosschleife braucht.
Nun hat eine Endlosschleife eben den Nachteil, dass sie endlos dauert, und damit das Programm blockiert.
Die Lösung ist, diese endlosschleife in einen Thread auszulagern, der bei Erfolg das gelesene Verarbeiten lässt.
Dann würde man allerdings etwas wie folgt schreiben:
Delphi-Quellcode:
while not terminated do
try
ReadBuffer(...);
verarbeite_gelesenes(...);
except
end;
end;
P.S. zum Thema Threads:
Luckies Tutorial (pdf) erfordert allerdings
imho gute Grundkenntnisse