Ver Mensaje Individual
  #17  
Antiguo 18-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Reputación: 22
Caro Va por buen camino
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 //Recorremos la lista
  showmessage(Lista[i]);
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 18-06-2008 a las 03:10:29.
Responder Con Cita