Habe ich mir angesehen, aber die Welt ist halt nicht immer so einfach wie man es sich gerne machen würde. Die Hauptliste enthält bereits einen Hash und ist danach sortiert (um effizient darauf zugreifen zu können), alle anderen Listen benötigen keinen Namen und keinen Hash sie werden beim Parsen korrekt zusammengestellt und niemals durchsucht.
Das Beispiel ist soweit reduziert, dass nur noch das wesentliche (die gegenseitige Verlinkung) zu sehen ist.
Falls Du Dir die Implementierung von TDictionary mal angesehen hast, ist das ein dynamisches Array aus Records mit HashCode, Key und Value also genau was TListData auch enthält. Wo also die Liste verwaltet wird spielt meines Erachtens nach nur eine untergeordnete Rolle. Der einzige Unterschied liegt eventuell in der etwas lahmen Suche von TDictionary...
So weit, so richtig, aber warum das
Rad zweimal erfinden?
Sind denn diese anderen Listen von einen anderen (eigenen) Listentyp ohne Hash?
Und der entscheidene Unterschied ist: Ich habe keine Speicherlecks beim Beenden (laut FastMM).
Um wieviel langsamer ist denn die Suche von TDictionary im Verhältnis zu deiner Lösung?
Wenn du schon die Zitatfunktion bemühst:
Da habe ich mich vertan! Sorry, ist korrigiert!