Klingt irgendwie nach einem
Dictionary, besonders wenn du denn Index nur zum Durchlaufen brauchst.
+1
Alzaimars Klassen sind alles andere als "fett". Wer seine Beiträge kennt, weiß wie wichtig ihm Performance ist.
Und seine kleinen Hashlisten sind mehr zackig genug. Wenn du Zugriff zu neueren Delphis hast, kannsu dir TDictionary<int, String> ankieken.
Bis dahin ist sein TIntegerDictionary so ziemlich das wassu willst.
Zum Glück gibt es inzwischen (seit D2009) auch noch die generische TList<>, welche da vieles vereinfacht.
(auch wenn dieses eine kleine und manchmal gemeine Einschränkung besitzt, was das nachträgliche Ändern eines Recordinhaltes betrifft
)
Records sind
Werte, keine
Objekte und erst recht keine "Entitäten". Und in fast jedem Fall sollten
Werte unveränderlich sein. Will heißen, dass eine Änderung eine veränderte Kopie liefern sollte. Nur so ist klar was unter der Haube tatsächlich passiert.
Delphi-Quellcode:
var x, y TDeinRecord;
begin
x.Abc := 1;
y := x;
x.Abc := 2
Assert(y.Abc = 2, 'Ja y.Abc = 1, denn y hat bekam ja auch eine KOPIE, so arbeiten reine *Werte* nunmal.');
end;
http://stackoverflow.com/questions/441309/why-are-mutable-structs-evil
Wer Records als Objekte missbraucht, weil er keinen Bock auf Speicherverwaltung hat, hat die falsche Laufzeitumgebung gewählt.