Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

Doppel schnell aus Liste löschen.

  Alt 7. Dez 2014, 21:20
Delphi-Version: 2007
Bei 100.000 Punkten kann das schon mal 10 sec. dauern. Hat jemand eine bessere Idee? Die Klasse ist eigentlich schon ziemlich optimiert, analog TList (Capacity, Move und Co.)
Delphi-Quellcode:
function TFloatPoints.IndexOf(const Value: TFloatPoint): integer;
var
  I: integer;
begin
  Result := -1;
  for I := 0 to FCount - 1 do
    if Util_SameFloatPoint(FItems[I], Value) then
    begin
      Result := I;
      Break;
    end;
end;

procedure TFloatPoints.RemoveDoubles;
var
  List: TFloatPoints;
  I: integer;
begin
  List := TFloatPoints.Create;
  try
    for I := 0 to FCount - 1 do
      if List.IndexOf(FItems[I]) < 0 then
        List.Add(FItems[I]);
    Assign(List);
  finally
    List.Free;
  end;
end;

Geändert von TBx (11. Dez 2014 um 12:11 Uhr) Grund: Titel korrigiert
  Mit Zitat antworten Zitat