Einzelnen Beitrag anzeigen

Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Peinliche Frage zu generischen Listen

  Alt 29. Nov 2016, 11:47
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?
  Mit Zitat antworten Zitat