Wo erstellst Du die Liste ubd wo lädst Du die Liste?
Im FormCreate?
Dann gehört das Vocabulary.Free ins FormDestroy.
Hab ich jetzt auch so gemacht.
Delphi-Quellcode:
If Vocabulary.Count > 0 Then
//mach was
Else
Begin
FormDestroy(Vocabulary);
End;
Sobald die Bedingung nicht mehr erfüllt ist stürzt er aber ab. Er kommt garnicht dazu die Prozedur FormDestroy aufzurufen.
Du darfst die Liste
nicht in der Routine freigeben, sondern nur und ausschließlich nur in der Methode FormDestroy. Und die Methode FormDestroy darfst Du
nicht selbst aufrufen, das geschieht automatisch beim Programmende, genauso wie beim Programmstart FormCreate automatisch aufgerufen wird.
Die Liste in Deiner oben geposteten Routine freizugeben ist schlicht und einfach (bei der jetztigen Form der Implementierung) unsinnig und absolut kontraproduktiv.
Lass es doch bitte einfach endlich weg.
Bitte poste mal den vollständigen Quelltext, den Du bisher geschrieben hast. Mit den Fragmenten ist es nur ein Rumgestocher, wo welcher Fehler herkommen könnte und wie man ihn beheben könnte, wenn man die Abhängigkeiten innerhalb des gesamten Programmes nicht kennt.