Hallo Monday,
nein, der Original-Code ist korrekt, denn nach
https://www.delphipraxis.net/20262-m...inglisten.html kopiert die Routine
a ohne b nach diff:
Zitat:
* NAME: DifferenceStrings
* DESC: kopiert Menge a OHNE Menge b nach diff
* EXAMPLE: a = ['Porsche', 'Daimler', 'BMW', 'Ferrari']
* b = ['VW', 'BMW', 'Fiat', 'Volvo', 'Smart']
* diff = ['Porsche', 'Daimler', 'Ferrari']
Hierbei werden Elemente von
a, die auch in
b vorkommen, aus der Kopie
diff nach dem Kopieren gelöscht. In der Schleife
Delphi-Quellcode:
for i := 0 to b.Count -1 do
begin
idx := diff.IndexOf(b.Strings[i]);
if idx >= 0 then
diff.Delete(idx);
end;
ist
idx die Position des eventuellen Duplikats in
diff, und diese ist immer kleiner
oder gleich als
b.Count -1, was dem Element mit dem höchsten Index entspricht. diff.Count - 1, was dem Element mit dem höchsten Index in
diff entspricht.
Gruß, Andreas
[Edit]
Anstelle von
if idx >= 0 then
verwende ich generell den – nach meiner Meinung etwas schnelleren - Vergleich
if idx > -1 then
, aber das ist nur Schnickschnack.