Ich weiß nicht mehr, ob in D2009 die Generics schon richtig funktionierten, aber du kannst ja auch mal so was versuchen:
Delphi-Quellcode:
TDirectories = TList<TDirectory>;
TOptAttrs = TList<TOptAttr>;
TGroups = TList<TGroup>;
TQuotas = TList<TQuota>;
Viele deiner Methoden können damit vollständig entfallen oder einfach gemapt werden:
ClearGroups -> Groups.Clear
AddGroup -> Groups.Add
removeGroup -> Groups.Delete
GroupCount -> Groups.Count
entsprechend für die anderen Typen.