Der Fehler liegt wohl in der letzten Zeile:
until Selstart < 0
Bis der Selstart UNTER 0 ist. Dabei kann er gar nicht niedriger als 0 sein
Richtig sollte es heißen:
until SelStart >= Length(ChatBox.Text)
Dieser Code würde solange ausgeführt werden, bis ganz unten am Text angekommen würde
//edit: Es wird außerdem nirgendwo
SelStart verändert. Wie kann das auch zu einem Ende kommen?