Ich empfehle dir immer möglichst auf Wiederverwendbarkeit zu achten, indem du solche Aufgaben in eine Prozedur/Funktion auslagerst. Mit der Zeit hast du einen Pool von Funktionen, welche du bei Bedarf einfach nur noch in deinen Code kopieren kannst.
Also etwa so:
Wort:string aus liste:TStringList entfernen:
Delphi-Quellcode:
procedure wort_aus_liste_entfernen( wort : string; liste : TStringList );
var i : integer;
begin
i := 0;
while i < liste.Count do
if liste.strings[i] = wort then liste.Delete( i ) else inc(i);
end;
Dein "Items-Fehler": Fahr mal mit dem Mauszeiger auf TStringList und drücke F1, dann dort unter Eigenschaften und suche nach der Eigenschaft Items. TStringList kennt übrigens die Eigenschaft Strings.
for Schleife: Wie andere bereits erwähnt haben: Du definierst eine for... Schleife. Enthält deine Liste zum Beispiel 1000 Einträge, dann wird deine Schleife 1000 Mal durchlaufen. Wenn du nun innerhalb dieser Schleife Listenelemente löschst, dann greifst du irgendwann via Index i auf Listenelemente zu, welche es an Position i gar nicht mehr gibt.