Mir schwant ich hab ´nen Denkfehler drin... Ob das Teil nun als Konstante oder als globale Variable deklariert ist, macht doch (in diesem Fall) keinen Unterschied:
Die Liste ist global, nun erstelle ich beim Eintritt in meine Methode (oder Prozedur, whatever) eine lokale Variable. Diese kann ich zwar problemlos in die Liste integrieren, beim Austritt aus der Methode verliert diese aber ihre Gültigkeit. Somit ist das gerade erstellte Element in der Liste nicht mehr vorhanden und ich bekomme (mit etwas Glück) eine Zugriffsverletzung, wenn ich es benutze.
Ergo: Es kann gar nicht anders gehen, als dass ich diese Liste zur Laufzeit nur als Startbelegung einer identischen Liste benutze, die ich in der Klasse zur Laufzeit anlege und warte und im Destroy auch selbst wieder komplett freigebe. Delphi gibt ja die am Anfang vorhandenen Elemente der "konstanten" Liste selbst frei, evtl. selbst hinzugefügte Elemente müsste ich grundsätzlich davon unterscheiden können, um sie auch selbst wieder freizugeben...
Manchmal hilft das Erklären des Problems doch schon, um zur Lösung zu kommen
"Seit er seinen neuen Computer hat, löst er alle seine Probleme, die er vorher nicht hatte."