Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-10-2016
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
numeros aleatoriios sin repetir

Hola (de nuevo), este problema se que es muy recurrente, pero no he conseguido (después de mirar mucho por la red y el foro), la forma de hacer trabajar mi programa. Lo ultimo ha sido usar un truco de la web de trucomania, pero aunque no da error de compilación, no funciona para nada bien una vez se ejecuta el codigo.

El código que se debe ejecutar es este:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
  var
    i, num, numOk: longint;
    Ristra : TAlea;
    n      : integer;

begin
{50.000
100.000
1000.000
100.000.000
150.000.000}

    lista.clear;
    randomize;
    case comb.ItemIndex of
    0: begin
        lista.clear;
        for i:= 0 to 100 do
            with lista.Items.Add do
            begin
              //barra.Max:= 50000;
              barra.Position:= i;
              label3.Caption:= 'Combinaciones generadas: '+IntToStr(i);

    {Sacamos 6 numero sin repetir}
      Ristra:=TAlea.Create(6);
      for n:= 0 to 5 do begin
      memo1.Lines.Add( IntToStr(Ristra.PillaNumero) );
      with lista.Items.Add do
        subitems.Add(IntToStr(ristra.PillaNumero));
        subitems.Add(IntToStr(ristra.PillaNumero));
        subitems.Add(IntToStr(ristra.PillaNumero));
        subitems.Add(IntToStr(ristra.PillaNumero));
        subitems.Add(IntToStr(ristra.PillaNumero));
        subitems.Add(IntToStr(ristra.PillaNumero));
    end;

    Ristra.Free;
...

Como puede verse, en el case, al seleccionar el item 0 del combobox, las combinaciones (de 6 numeros) llegan a 100, es decir, la lista (listview) debe tener 100 filas de 6 numeros no repetidos. La unidad que uso para realizar esto está aquí.. http://www.trucomania.org/trucomania/ftesp.html

El problema es que en vez de rellenar la lista con esas 100 filas de numeros, solo hace un par (en el mejor de los casos).
¿Alguien sabe donde está el error?

Captura de la aplicacion corriendo (aunque en la captura el combo tenga 50.000, en el codigo a modo de pruebas tiene un valor de 100)
http://pasteall.org/pic/index.php?id=107843

Gracias.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #2  
Antiguo 19-10-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues así, a bote pronto, me parece que falta un begin inmediatamente abajo de

Código Delphi [-]
with lista.Items.Add do

LineComment Saludos
Responder Con Cita
  #3  
Antiguo 19-10-2016
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
voy a probar, saludos

Edito: Ese begin no hace nada roman, lo he probado y sigue haciendo cosas raras.

He grabado un pequeño video del problema, por si da mas pistas.
https://youtu.be/2JDBzoq2jPY

Un saludo y graacias.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.

Última edición por danielmj fecha: 19-10-2016 a las 17:34:35.
Responder Con Cita
  #4  
Antiguo 19-10-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.913
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Y ademas falta su END. Pascal no es como python. La identacion es solo estetica.

Recomiendo que no uses WITH. Es uno de los keywords mas confusos del lenguajes y se debe evitar como la plaga.
__________________
El malabarista.
Responder Con Cita
  #5  
Antiguo 19-10-2016
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Hola, falta su END? si falta un END no deberia dar error de compilacion?
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #6  
Antiguo 19-10-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.054
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mamcx Ver Mensaje
Y ademas falta su END. Pascal no es como python. La identacion es solo estetica.
Recomiendo que no uses WITH. Es uno de los keywords mas confusos del lenguajes y se debe evitar como la plaga.

Cita:
Empezado por danielmj Ver Mensaje
Hola, falta su END? si falta un END no deberia dar error de compilacion?
Recomiendo que no uses WITH
Responder Con Cita
  #7  
Antiguo 19-10-2016
Reasen Reasen is offline
Miembro
NULL
 
Registrado: dic 2015
Ubicación: Barcelona
Posts: 140
Poder: 9
Reasen Va por buen camino
No entiendo al 100% tu problema pero te ayudaría usar una función más simple para generar números, te he creado una que te va a ahorrar usar 'IntToStr' en cada línea.

Código Delphi [-]
function NumerosAleatorios(Largo: integer): string;
var
  i: integer;
begin
  Randomize;
  for i := 0 to largo - 1 do
    result := result + IntToStr(Random(9));
end;
Responder Con Cita
  #8  
Antiguo 19-10-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
De hecho, también le falta su begin al bloque for. Lo del with es lo de menos.

LineComment Saludos
Responder Con Cita
  #9  
Antiguo 19-10-2016
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
hola roman, eso ya esta arreglado y sigue sin funcionar como deberia. Que la sintaxis no sea muy estetica tiene solución, pero el sacar 6 numeros del 1 al 49 en un for del 1 al 100 (por ejemplo) y que esos 6 numeros no se repitan es mas complicado que hacer la gran piramide! (esto ultimo es una prueba de que ya me tiene frustrado el dichoso programa).

Hola Reasen, pues basicamente lo que pretendo es eso de arriba, sacar 6 numeros aleatorios del 1 al 49 sin que se repitan y los vaya almacenando en un listview de 100 posiciones (o 50.000 estos valores son de ejemplo). Después de buscar y buscar informacion y gente con el mismo problema que yo en distintos foros, di con la web de trucomania y me ofrecia la posibilidad de usar una unidad que se encarga de todo pero como puedes ver, NO me funciona.

Un saludo.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
No repetir lineas lbidi SQL 2 09-09-2014 02:19:54
Repetir una accion lmpadron C++ Builder 5 29-07-2010 20:21:31
Repetir valor altp SQL 7 27-06-2007 13:23:05
Es sano repetir? Johnny Q OOP 4 12-07-2005 21:09:51
no repetir campos ebeltete SQL 5 22-05-2003 04:32:53


La franja horaria es GMT +2. Ahora son las 06:59:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi