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.911
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.040
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
  #10  
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
Cita:
Empezado por danielmj Ver Mensaje
hola roman, eso ya esta arreglado y sigue sin funcionar como deberia.
Entonces ¿por qué no pones aquí el código arreglado para que partamos de ahí?

LineComment Saludos
Responder Con Cita
  #11  
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,

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
  var
    i: 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;

        //barra.Max:= 50000;
        //barra.Position:= i;
        //label3.Caption:= 'Combinaciones generadas: '+IntToStr(i);

    {Sacamos 6 numero sin repetir}
      Ristra:=TAlea.Create(6);
      for n:= 1 to 6 do
        for i:= 0 to 100 do
          begin
          //memo1.Lines.Add( IntToStr(Ristra.PillaNumero) );
            with lista.Items.Add do
            begin
              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));
              Ristra.Free;
            end;
              {begin  //---> esto funciona pero son numeros repetidos.
              subItems.Add(IntToStr(randomRange(1,49)));
              subItems.Add(IntToStr(randomRange(1,49)));
              subItems.Add(IntToStr(randomRange(1,49)));
              subItems.Add(IntToStr(randomRange(1,49)));
              subItems.Add(IntToStr(randomRange(1,49)));
              subItems.Add(IntToStr(randomRange(1,49)));
              lista.Refresh;
//              end;
              button4.Enabled:= true;
              button3.Enabled:= true;
              end;}
         end;
    end;

Solo pongo el case 0 por que es el caso donde falla, una vez que este funcione el resto de case es copiar y pegar. Tal como está devuelve los 6 numeros y los mete en la primera posicion de la lista, pero tengo que estar pulsando el boton y entonces lo que hace es machacar los 6 numeros previos con otros nuevos ignorando el for de 1 a 100. saludos.
__________________
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 19:12:02.
Responder Con Cita
  #12  
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
Cita:
Empezado por danielmj Ver Mensaje
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.

Veamos si esto te sirve:

Añade una variable global || Acumulador: TStringList;

Código Delphi [-]
function RandomRange(const AFrom, ATo: Integer): Integer;
begin
  if AFrom > ATo then
    Result := Random(AFrom - ATo) + ATo
  else
    Result := Random(ATo - AFrom) + AFrom;
end;

function NumerosAleatorios(Minimo, Maximo: integer): string;
var
  NumOk:Boolean;
  Numero: string;
begin
  Randomize;
  repeat
    Numero := IntToStr(RandomRange(Minimo, Maximo));
    if pos(Numero, Acumulador.Text) = 0 then
    begin
      result := Numero;
      Acumulador.Add(Numero);
      NumOk:=True;
    end;
  until NumOk;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  Acumulador := TStringList.Create;
end;

//ejemplo de uso: showmessage(NumerosAleatorios(100,220));
Responder Con Cita
  #13  
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 entrada, el orden de los FOR parece estar alrevés: por cada una de las cien líneas debes hallar seis números. Y entonces faltaría crear esos seis números por cada línea (TAlea.Create sólo se llama una vez).

Mira este ejemplo, a ver si te vale:

Código Delphi [-]
type
  TIntegerArray = array of Integer;

function RandomArray(AMin, AMax: Integer; ACount: Word): TIntegerArray;
var
  Found: Boolean;
  Max, N, I, J: Integer;

begin
  Max := AMax - AMin + 1;

  if ACount > Max then
    raise Exception.Create('There are more pigeons than holes');

  SetLength(Result, ACount);

  Result[0] := Random(Max) + AMin;

  for I := 1 to ACount - 1 do
  begin
    repeat
      Found := true;
      N := Random(Max) + AMin;

      for J := 0 to I - 1 do
        if (Result[J] = N) then
        begin
          Found := false;
          break;
        end;
    until Found;

    Result[i] := N;
  end;
end;

La función RandomArray te genera ACount números enteros en el rango AMin..AMax.

Lo puedes usar así:

Código Delphi [-]
var
  A: TIntegerArray;
  I, J: Integer;
  Item: TListItem;

begin
  ListView1.Clear;

  for I := 1 to 100 do
  begin
    A := RandomArray(1, 49, 6);
    Item := ListView1.Items.Add;
    Item.Caption := IntToStr(A[0]);

    for J := 2 to 5 do
      Item.SubItems.Add(IntToStr(A[J]));
  end;
end;

Edito:
No había visto el mensaje de Reasen. Ahora ya tienes dos opciones

LineComment Saludos

Última edición por roman fecha: 19-10-2016 a las 19:21:46.
Responder Con Cita
  #14  
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, de momento he cambiado el orden de los for y ahora me genera los 6 numeros durante 100 posiciones de la lista sin repetirlos, pero llega un momento en que solo genera numeros del 1 al 9 obviando el resto hasta el 49. ¿?

Sobre vuestros codigos, me pongo con ellos y os comento. En un rato entro a trabajar, no sé si me dará tiempo hoy.
Saludos y gracias.

http://pasteall.org/pic/index.php?id=107869
__________________
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
  #15  
Antiguo 19-10-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por danielmj Ver Mensaje
pero llega un momento en que solo genera numeros del 1 al 9 obviando el resto hasta el 49. ¿?
Ten en cuenta que RANDOM *no signifca* que la distribucion es *uniforme*.

Es totalmente posible que una funcion random genere un millon de veces el *mismo* numero.

De hecho, una funcion random real se graficaria y daria que hay varios "clusters" alrededor de un grupo de numeros, sin que haya una distribucion perfecta de las posiblidades.

--
* Asumiendo que el codigo este bien hecho y no altere aun mas los resultados.
__________________
El malabarista.
Responder Con Cita
  #16  
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 mamcx,
No puedo poner código ahora, estoy con el móvil desde el curro, pero ya me funciona
He cambiado el orden de los for y la línea que dice creaste(6) creo recordar,
La he cambiado por creaste(49) y ya tiene más lógica.
Al millón de combinaciones no he llegado, he tenido que apagar la máquina antes
he llegado a 342 mil y pico, y esa es otra, necesito exprimir el listview para ver dónde
esta su límite. Si depende de la memoria del sistema no me preocupa
Pero si tiene alguna limitación en lo que es la programación del mismo control,
Entonces faltará y quiero saber cuándo para saber el número Marconi combinaciones
Que el listview puede almacenar en sus filas.
De todos modos, aún no la doy por terminada, ya me devuelve los 6 números que más se repiten
Pero ahora tengo que usar las combinaciones y las permutaciones de las matemáticas
Para mostrar esa combinación firmada por los seis números más repetidos de todas las formas posibles.
Que para ser 6, si no me equivoco, tiene 720 posibles formas de mostrar la misma combinación.
Así que aún queda.

Un saludo y por si acaso perdonar pero estoy escribiendo con el móvil.
__________________
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
  #17  
Antiguo 20-10-2016
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por mamcx Ver Mensaje
Ten en cuenta que RANDOM *no signifca* que la distribucion es *uniforme*.

Es totalmente posible que una funcion random genere un millon de veces el *mismo* numero.

De hecho, una funcion random real se graficaria y daria que hay varios "clusters" alrededor de un grupo de numeros, sin que haya una distribucion perfecta de las posiblidades.

--
* Asumiendo que el codigo este bien hecho y no altere aun mas los resultados.
FALSO.
Las funciones Random si son uniformes. Todas* tienen la misma probabilidad de salir: 1/m siendo m el período que tenga el generador.

*Todas las que se precien, y que están bien implementadas. Tenemos los clásicos generadores congruencial mixto y/o multiplicativo, como el gran generador MT19937N que es una implementación de Mersenne Twister; ampliamente probado y que está implementado como base en muchos lenguajes. Entre ellos: Lazarus. Delphi que yo sepa sigue usando un congruencial mixto.

Y digo que son uniformes porque fueron pensadas para generar números en el rango [0, 1)
Estas funciones random luego se deben volcar en la distribución que uno necesite para generar las Variables Aleatorias que pretende recrear o simular, calcular, etc. Por ejemplo, se puede usar una distribución normal, una uniforme, una exponencial, etc. Todas estas toman el valor R (random) y aplica el algoritmo de la función inversa acumulada F de dicha distribución. Por ejemplo para el caso de una distribución uniforme:

Código Delphi [-]
function Uniform(A, B: double): double;
var R: double;
begin
  R := random; // obtenemos un valor pseudo aleatorio en el rango [0,1)
  result := A + R * (B - A); // expresamos ahora R en la distribución para el rango [A,B]
end;

Y para la distribución normal es un poco más complicada, ya no la recuerdo muy bien... no me animo a poner un código realmente no vaya a ser cosa que le pifie. Recuerdo de un método relativamente rápido y lo suficiente preciso para la mayoría de las situaciones, e inspirado en la teoría del límite central.
Se calculaba la suma de 6 u 12 (no recuerdo bien) valores R, y luego se procedía a ¿multiplicar? por el valor de la desviación estándar pasado como parámetro. Era un algoritmo relativamente simple.

Como es de esperar, las variables aleatorias obtenidas con esta distribución seguirán la forma normal.

Y así, es para cada distribución que uno quiera.
En términos abstractos, matemáticamente tenemos VA = F(p1...pN, GEN);
Siendo VA la Variable Aletoria
F la función inversa para la distribución que uno requiera
p1 a pN los parámetros que requiere la distribución
GEN la función generadora de números pseudoaletorios [0,1)

Los repetidos que uno observa cuando hace uso de random en Delphi o en cualquier otro lenguaje se debe a que:

1. Está acotando el rango de secuencia a adoptar un valor mucho más chico. Por ejemplo, cuando "yo quiero números aletorios entre 1 y 50" random(50) lo que hará es traducir esos decimales infinitos a un rango finito. Este ejemplo es un tipico caso de una uniforme (A = 1, B = 50). Si en lugar de que el rango sea 50 sino un número mucho más grande.... 10^32 por ejemplo estos decimales entre 0 y 1 aportan mucho más riqueza y la probabilidad de encontrar repetidos disminuye.

2. O ha generado tantos números que se ha completado la secuencia de m-1 números distintos que es capaz de generar. Este m es un valor bastante grande. Un generador bien planteado, generará m-1 números distintos (insisto... si toma el valor R en 0..1 en su concepción infinita... recordemos que la aritemética de punto flotante tiene precisión finita) y empezará el nuevo ciclo (la misma secuencia) a partir del m-esimo número.

Mamx por favor evita pasar estas vergüenzas, no es bueno que tenga que estar corrigiendote seguido. Confundes al chico. A repasar se ha dicho... yo también que ya no recuerdo el algoritmo para la distribución normal.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #18  
Antiguo 20-10-2016
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Recordaba que antes había expuesto los algoritmos (al menos de las 3 distribuciones más comunes). Guarden en caja fuerte, hagan backups, metan servidores espejos, etc.. a ese hilo.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #19  
Antiguo 20-10-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Delphius Ver Mensaje
Mamx por favor evita pasar estas vergüenzas, no es bueno que tenga que estar corrigiendote seguido. Confundes al chico.
Tienes razon Delphius. He re-chekeado el tema y lo que estaba intentando comunicar no estuvo bien.

He dado algunas vueltas a ver de donde saque tal idea, y creo que aqui hay un buen tema al respecto:

http://blog.blprnt.com/blog/blprnt/y...-visualization

Lo que se ve mas claro en las graficas es que los numeros aleatorios no siguen una progresion uniforme *estricta* tal como lo entenderia ingenuamente un ser humano. Sino que se pueden agrupar los resultados y ocurrir "brincos".

Que era lo que intentaba decir en respuesta a:

Cita:
pero llega un momento en que solo genera numeros del 1 al 9 obviando el resto hasta el 49. ¿?
Lo cual por si solo no es un problema.

Ahora, como realmente se debe explicar esto?
__________________
El malabarista.
Responder Con Cita
  #20  
Antiguo 20-10-2016
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Buenos dias roman,

He probado tu codigo en una aplicación a parte, y si funciona gracias.
Saludos.
__________________
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 21:36:51.


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