Du hast schon richtig geahnt, die Threads blockieren sich gegenseitig.
Der Speichermanager stellt sicher, dass nur ein Thread gleichzeitig auf ihn zugreift. Wobei ich jetzt nicht weis, was setlength mit einem shortstring macht.
btw.: Du solltest die ThreadProc (Haenge) mal mit einem 32-bit-Parameter und als stdcall deklarieren.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.