Wenn du es über die Datei machen willst, dann mußt du vor dem Einfügen eines neuen OINs erstmal alle vorherigen Einträge der Datei prüfen, ob dieser schon existiert.
Ich geh mal davon auß, daß deine kleine List nicht gleich den
RAM vollmacht,
also wäre hier eine StringList wirklich einfacher.
Hier könnte man grundsätzlich erstmal genauso vorgehn
und erstmal nachsehn, ob der "neue" PIN schon vorhanden ist,
aber hier lassen sich auch ganz praktisch einige Funktionen der TStringList verwenden.
Also Sortieren und beim Einfügen Dupplikate ignorieren lassen
und dann die Schleife so oft durchlaufen lassen, bis .Count deiner Anzahl entspricht.
Die Liste groß zu optimieren lohnt sich eh nicht, oder willst du dieses sehr oft machen?
Außerdem ist die Funktion RandPW auch nicht grad die Optimalste, also was soll's.