Also ganz einfach alle Zugriffe auf dieses Array über eine CriticalSection oder Ähnliches absichern.
Ganz Einfach, alles, was mit Pointer arbeitet und sich nicht als
threadvar deklarieren läßt, das mußt du absichern.
Von Natur aus sind erstmal nur die Referenzzählungen von Strings (AnsiString/UnicodeString) und Interfaces ThreadSave, weil Delphi dort selber schon threadsichere Zugriffe nutzt ... um alles andere mußt du dich selber kümmern.