Es wurde ja schon mehrfach erwähnt. Die TList Klasse gibt die Elemente die sie beinhaltet nicht wieder automatisch frei. Siehe auch
TList.Destroy (die Anmerkung). Deshalb wäre es vielleicht sinnvoll, auf eine TObjectList umzusteigen und diese mit OwnsObjects = True zu erzeugen.
Alternativ müsstest du im Destructor deiner TValueList Klasse durch alle Elemente iterieren und diese dann freigeben.
Übrigens:
Delphi-Quellcode:
if fDevValueList.Count > 0 then
begin
repeat
if myDevValue.TimeOffset = fDevValueList[i].TimeOffset then
found := True
else
Inc(i);
until found or (i > fDevValueList.Count - 1);
end;
Kann man auch so schreiben:
Delphi-Quellcode:
if fDevValueList.Count > 0 then
begin
repeat
if myDevValue.TimeOffset = fDevValueList[i].TimeOffset then
found := True
else
Inc(i);
until found or (i = fDevValueList.Count); // <-------- ÄNDERUNG HIER
end;
Mir stellt sich jetzt nur noch die Frage, wieso du überhaupt noch die Liste durchlaufen musst. Du setzt dir doch schon in
fLastTimeStamp
den zuletzt hinzugefügten TimeStamp. Reicht es dann nicht einfach zu überprüfen, ob der neue TimeStamp größer/neuer ist als der zuletzt hinzugefügte?