Moin!
Ich rate mal, dass der Fehler hier liegt:
Delphi-Quelltext
1:
| if RecText[1] = '{' then |
weil: Du liest in einer Schleife per .RecieveText und setzt den anderen Teilstring auf einen Leerstring. Später wird also RecText auch ein Leerstring sein (können), und dann haut dir RecText[1] natürlich eine rein (Exception), weil der String möglicherweise leer ist.
Also, ganz ehrlich, wenn ich mir deinen Code so ansehe, dann sieht mir das nach einem Protokoll-Parser aus; aber leider einer, der total krasse Macken hat, wenn ich das mal so sagen darf

(zwei Aufrufe von .RecieveText und dann noch in einer Schleife...

)
Darf ich dir mal mein neues
Protokoll-Chat-Tut ans Herz legen?
cu
Narses