Hola BlueSteel, yo sigo pensando que deberías hacerlo con StringList, no es dificil manejarlo.
Un StringList es una clase que hereda de TString, llegando a ser una lista de cadenas que la tienes en memoria. como dice Neftali las búsquedas son casi inmediatas, de verdad te ayudara mucho en otras cosas que quieras hacer, incluyendo esta.
Sobre el error en la linea que marcas le faltaba un parentesis al final, se me ha ido.
Primero debes definir una variable de tipo TStringList y despues crearla como cualquier instancia de clase con:
Código Delphi
[-]
StringList : TStringList
......
StringList := TStringList.Create;
Despues puedes utilizar todas las funciones y procedimientos de la clase TString como Add, Delete, IndexOf, Exchage..... Si te fijas en el componente ListBox, existe una propiedad Items, que es un TString, y seguro que sabes manejar dicha propidad adicionando items, borrando, etc, un TStringList lo manejas de la misma manera ya que también hereda de TString, la diferencia es que no es un componente sino solo una clase.
Ahora sobre mi ejemplo quedaría así, seleccionando los 300 ganadores.
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
Numero, i, j, Limite : Integer;
Lista : TStringList;
begin
Lista := TStringList.Create;
Lista.Sorted := True;
Randomize;
Limite := 1500;
for j:=0 to 300 do
begin
Numero := RandomRange(0, Limite);
if Lista.IndexOf(IntToStr(Numero))=-1 then
Lista.Add(IntToStr(Numero))
else
begin
While (Lista.IndexOf(IntToStr(Numero))<>-1) and (Lista.Countdo
Numero := RandomRange(0, Limite);
if Lista.IndexOf(IntToStr(Numero))=-1 then
Lista.Add(IntToStr(Numero));
end;
end;
showmessage('Se ha terminado de encontrar a los ganadores');
for i :=0 to Lista.Count-1 do showmessage(Lista[i]);
end;
Saluditos