Am bequemsten wäre da sicherlich eine TStringList, die hat ein paar Eigenschaften die man nur passend setzen muss, dann wird das Hinzufügen von bereits in der Liste enthaltenen Elementen entweder mit oder ohne
Exception verweigert. Im Prinzip müsstest Du dann nur noch die Erzeugung durchlaufen lassen bis die Stringlist dann ausreichend viele Elemente enthält (also die gewünschte Anzahl eindeutiger PINs erzeugt wurde). Kleiner Nachteil: Damit der Doublettencheck funktioniert, muss die Eigenschaft "Sorted" auf true gestellt sein, d.h. Deine PIN-Liste ist danach standardmäßig aufsteigend sortiert. Wenn das kein Problem ist, dürfte das die schnellste Lösung sein: ca. 5 Minuten Hilfe zu TStringList lesen und nochmal 5 Minuten für die Implementierung.
Was die Performance angeht, kann ich nur sagen: Ausprobieren. Bei ein paar tausend Lines dürfte das aber noch nicht so dramatisch ins Gewicht fallen.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet.
" (Henning Richter)