Deine Funktion wird korrekt ausgeführt, aber deine Ausgabefunktion hat einen Fehler:
Delphi-Quellcode:
Memo2.Clear;
for i := 0 to MyCopyList.Count - 1 do
begin
Values := MyList.Items[i];
Memo2.Lines.Add(format('%d: %d, %d', [i, Values.Counter, Values.Value]));
end;
Du zeigst die Einträge der originalen Liste an, benutzt aber die Anzahl der kopierten Liste als Maximum.