Ein FreeOnTerminate macht mir meine Variable ja nicht Nil, stimmt das Assigned dann überhaupt?
Natürlich nicht.
Entweder der Thread gibt sich selber frei und äußere Variablen sind potentiell ungültig.
Oder man gibt den Thread nur von außen Frei.
Oder der Thread setzt die Variable auf nil, wenn er sich selber freigibt.
Muss die Variable AFTPThread wirklich im Formular deklariert sein?
Wenn die Form Zugriff auf den Thread haben will, dann ja.