Wenn wir schon dabei sind... Habe ich mal eine Funktion geschrieben, um die Duplikate rauszubekommen aus dem TStringDynArray. Funktioniert zwar, wirkt aber doch arg zweckentfremdet
Geht das eleganter bei gleicher Performance?
Delphi-Quellcode:
function TfoPersistentModeller.RemoveDuplicateTags(
const aTags: TStringDynArray): TStringDynArray;
var
i,k: integer;
varTagDict: TDictionary<string, string>;
begin
k := 0;
varTagDict := TDictionary<string, string>.Create(Length(aTags));
for i := 0 to length(aTags)-1 do
begin
if varTagDict.ContainsKey(aTags[i]) then Continue;
varTagDict.Add(aTags[i], '');
inc(k);
setlength(Result, k);
Result[k-1] := aTags[i];
end;
varTagDict.Free;
end;
Mal abgesehen von den klassischen zwei Schleifen-Lösung des Problems...