Ver Mensaje Individual
  #15  
Antiguo 17-06-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Reputación: 24
BlueSteel Va por buen camino
Cool

Bueno...

al final lo realice de otra forma... sin crear un StringList...

Código Delphi [-]
Procedure TForm1.Sortear;
Var
   Num_Registros : Integer;
   sFin : Boolean;
begin
    sFin := False;
    Num_Registros := ADQ_Select.RecordCount;
    Randomize;

    While sFin = False Do //Ciclo para verificar si el numero ya habia sido seleccionado
    Begin
        sGanador.AsInteger := RandomRange(1,Num_Registros);
    With Premiados Do
    Begin
         If Not Locate('Nro',sGanador.Text,[]) Then  // Aqui verifico que no este dentro de la tabla temporal.. si no esta lo agrego..
            Begin
                 ADQ_Select.Locate('Nro',sGanador.Text,[]);
                 Premiados.Append;
                 Premiados.FieldByName('Nro').AsString       := IntToStr(ADQ_Select['Nro']);
                 Premiados.FieldByName('Rut').AsString       := ADQ_Select['Rut'];
                 Premiados.FieldByName('Nombre').AsString    := Concat(ADQ_Select['Nombres'],' ',ADQ_Select['Apellidos']);
                 Premiados.FieldByName('Contrato').AsInteger := ADQ_Select['Contrato'];
                 Premiados.FieldByName('Abono').AsInteger    := ADQ_Select['Abono'];
                 Premiados.FieldByName('Ubicacion').AsString := ADQ_Select['Ubicacion'];
                 Premiados.Post;
                 sFin := True;
            End;
    End;
    End;
end;

bueno, y el codigo anterior lo llamo así

Código Delphi [-]
procedure TForm1.BitBtn4Click(Sender: TObject);
Var
   i : Integer;
begin
     For i:=1 to 300 Do
     Begin
          Sortear;
     End;
end;


Bueno, el proceso en si se demora alrededor de 2 segundos en seleccionar los 300 numeros de un universo de 1505... así que quede más que satisfecho con el código...

maeyanes
tines toda la razón.. no di el código ni mensaje de error... creo que yo mismo me enviaré a leer la guia de estilo.. y como penitencia realizaré 1000000 de.. debo entregar codigo de error

Código Delphi [-]
For i:=1 to 1000000 Do
  ShowMessage('Debo engregar el error completo, con código y mensaje de error... no volverá a pasar de nuevo');


Salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 17-06-2008 a las 21:03:11.
Responder Con Cita