Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
Delphi 12 Athens
|
AW: Delete duplicates from list
4. Jan 2012, 08:59
^^ Ich habe das jetzt nochmal ins Reine geschrieben und versucht, dabei möglichst simpel zu bleiben.
Delphi-Quellcode:
procedure DeleteDuplicates(const List: TStrings);
var
CurrentIndex, FollowingIndex: integer;
begin
Assert(Assigned(List));
List.BeginUpdate;
try
CurrentIndex := 0;
while CurrentIndex < List.Count - 1 do
begin
for FollowingIndex := List.Count - 1 downto CurrentIndex + 1 do
if List[CurrentIndex] = List[FollowingIndex] then
List.Delete(FollowingIndex);
Inc(CurrentIndex);
end;
finally
List.EndUpdate;
end;
end;
procedure DeleteDuplicatesCaseInsensitive(const List: TStrings);
var
CurrentIndex, FollowingIndex: integer;
begin
Assert(Assigned(List));
List.BeginUpdate;
try
CurrentIndex := 0;
while CurrentIndex < List.Count - 1 do
begin
for FollowingIndex := List.Count - 1 downto CurrentIndex + 1 do
if AnsiLowerCase(List[CurrentIndex]) = AnsiLowerCase(List[FollowingIndex]) then
List.Delete(FollowingIndex);
Inc(CurrentIndex);
end;
finally
List.EndUpdate;
end;
end;
Wer mag, kann auch auf StrUtils u.a. zurückgreifen, so sollte es aber schon funktionieren.
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
Geändert von DeddyH ( 4. Jan 2012 um 09:45 Uhr)
Grund: Einwand aus folgendem Post berücksichtigt
|