Die
Access-Violation kommt, da nach dem SetLength(name, I+1) ein Inc(I) kommt. Der Array Index beginnt immer bei 0, daher ist ein Zugriff auf name[I] immer außerhalb der Arraygrenzen. Wenn du das Range-Checking eingeschaltet hättest, wäre die Fehlermeldung auch hilfreicher.
Unschön: Die Verwendung von "name", da TForm bereits ein Property "Name" hat, und "word" ist ein Datentyp. Die Delphi-Syntax lässt das zwar zu, aber es verwirrt eigentlich nur.
Warum schreibst du nicht eine Prozedur, die ein einzelnes Wort überprüft, und diese fütterst du dann in einer Schleife mit den einzelnen Listenelementen?