Hallo,
ich versuche grade, meine Anwendung mit dem Spring-Framework und Spring Collections zu ergänzen.
Ich habe eine Klasse
Code:
TMyItem = class
FLaenge: Double;
published
property Laenge: Double read FLaenge write FLaenge;
end;
Diese möchte ich in eine TQueue<TMyItem> stecken. Dazu habe ich
Code:
TMyQueue = class(TQueue<TMyItem>)
public
function Gesamtlaenge: Double; // iteriert über die Items und summiert auf
end;
...
MyQueue = TMyQueue.Create;
MyQueue.Enqueue(TMyItem.Create);
Gesamt:=MyQueue.Gesamtlaenge;
So weit so gut. Allerdings erhalte ich jetzt ein Speicherleck, da die einzelnen Items nicht automatisch freigegeben werden. Müsste ich also immer von Hand machen, will ich aber nicht.
Im Framework kann man ja auch über
Code:
TCollections.CreateQueue<TMyItem>(True);
eine Queue erstellen, die die enthaltenen Items automatisch freigibt. Das funktioniert ja auch. TCollections erzeugt mir allerdings nur eine TQueue, keine TMyQueue, die dann z.b. die Funktion Gesamtlaenge enthält.
Wie würdet ihr das am besten lösen? Doch von Hand im Destructor freigeben? TCollections vererben und um CreateMyQueue ergänzen? Class Helper Gesamtlaenge für die Klasse TQueue?
Scheint mir alles nicht so sauber. Aber da ich mich erst langsam herantaste, sehe ich noch keine gute Lösung.
Gruß Rainer