Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo Hace 1 Semana
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: Jun 2011
Posts: 366
Poder: 7
danielmj Va por buen camino
Revisión de código

Hola, tengo el siguiente código:

Código Delphi [-]
for i:= 0 to lista3.Items.Count -1 do
    for j:= 0 to per.Items.Count -1 do
    begin
      stB.Panels.Items[2].Text:= '[C. '+IntToStr(i+1)+'],'+'[P. '+IntToStr(j+1)+']';
      barra.Max:= lista3.Items.Count;
      barra.Position:= i+1;
      barra2.Max:= per.Items.Count;
      barra2.Position:= j;
      lista3.Selected:= lista3.Items[i];
      stB.Panels.Items[4].Text:= FormatFloat('0.00',(i*100)/lista3.items.Count)+'%';

      cad1:= lista3.Items.Item[i].SubItems[0] +
        ' '+ lista3.Items.Item[i].SubItems[1]+' '+lista3.Items.Item[i].SubItems[2]+
        ' '+ lista3.Items.Item[i].SubItems[3] +' '+lista3.Items.Item[i].SubItems[4];

      cad2:= per.Items.Strings[j];

      if cad2 = cad1 then

        with listaResumen2.Items.Add do
          begin
            inc(cinco);
            caption:= lista3.Selected.Caption;
            subitems[0]:= lista3.Items.Item[i].SubItems[0];
            subitems[1]:= lista3.Items.Item[i].SubItems[1];
            subitems[2]:= lista3.Items.Item[i].SubItems[2];
            subitems[3]:= lista3.Items.Item[i].SubItems[3];
            subitems[4]:= lista3.Items.Item[i].SubItems[4];
            subitems[5]:= lista3.Items.Item[i].SubItems[5];
            subitems[5]:= IntToStr(5);
            subitems[6]:= IntToStr(cinco);
          end;
    end;

Desde mi punto de vista, si se da la condición y cad2 = cad1, en la lista 3 se almacernará x valores. El problema es que es un proceso muy largo y que puede que no siempre se de esa condicion por lo que no puedo saber si realmente hará lo que debe. Por eso, si no es mucho pedir ¿según vosotros ese código es correcto?

Un saludo y 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 Hace 1 Semana
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: Aug 2007
Ubicación: Barcelona, España
Posts: 1.447
Poder: 13
duilioisola Tiene un aura espectacularduilioisola Tiene un aura espectacular
  • Agregué comentarios
  • Las barras de estado solo necesitan inicializarse una vez, ya que al principio ya sabes los datos.
  • Moví el cálculo de cad1 fuera del bucle que recorre per, ya que siempre calcula lo mismo (depende del indice del bucle i)
  • Moví el refresco de información de barra fuera del bucle que recorre per ya que solo depende del i.
  • Agregue algún begin..end porque me gusta mas como se ve el código.

Código Delphi [-]
// Inicializo barras de estado
barra.Max := lista3.Items.Count;
barra2.Max := per.Items.Count;

// Recorro lista3
for i := 0 to lista3.Items.Count -1 do
begin
  // Calculo CAD1 cada vez que cambia el indice de lista3
  with lista3 do
  begin
    Selected := Items[i];
    cad1 := Items.Item[i].SubItems[0] +
    ' '+ Items.Item[i].SubItems[1] +' '+ Items.Item[i].SubItems[2]+
    ' '+ Items.Item[i].SubItems[3] +' '+ Items.Item[i].SubItems[4];
  end;

  // Actualizo panel de informacion relacionada con recorrido de lista3
  barra.Position := i + 1;
  stB.Panels.Items[4].Text := FormatFloat('0.00',(i * 100) / lista3.items.Count)+'%';

    // Recorro per
  for j := 0 to per.Items.Count -1 do
  begin
    // Actualizo panel de informacion general
    stB.Panels.Items[2].Text := '[C. '+IntToStr(i+1)+'],'+'[P. '+IntToStr(j+1)+']';

    // Actualizo panel de informacion relacionada con recorrido de per
    barra2.Position := j;

    // Calculo CAD2 cada vez que cambia el indice de per
    cad2 := per.Items.Strings[j];

    // Si lista3 y per son "iguales" agrego un registro a listaResumen2
    if cad2 = cad1 then
    begin
      with listaResumen2.Items.Add do
      begin
        inc(cinco);
        caption:= lista3.Selected.Caption;
        subitems[0]:= lista3.Items.Item[i].SubItems[0];
        subitems[1]:= lista3.Items.Item[i].SubItems[1];
        subitems[2]:= lista3.Items.Item[i].SubItems[2];
        subitems[3]:= lista3.Items.Item[i].SubItems[3];
        subitems[4]:= lista3.Items.Item[i].SubItems[4];
        subitems[5]:= lista3.Items.Item[i].SubItems[5];
        subitems[5]:= IntToStr(5);
        subitems[6]:= IntToStr(cinco);
      end;
    end;
  end;
end;

Última edición por duilioisola fecha: Hace 1 Semana a las 08:50:25.
Responder Con Cita
  #3  
Antiguo Hace 1 Semana
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: Jun 2011
Posts: 366
Poder: 7
danielmj Va por buen camino
Gracias duilioisola, voy a probar.
__________________
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
  #4  
Antiguo Hace 1 Semana
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: Jun 2011
Posts: 366
Poder: 7
danielmj Va por buen camino
Hola, he probado estos dias el código y si bien "funciona" realmente no va a encontrar nunca nada en la lista 3. Me explico, supongamos que el día x del mes y del año z apareció la siguiente combinación: 23, 26, 28, 37, 40, 47 y ahora supongamos que el programa genera una combinación de otros seis numeros de la cual se hace las permutaciones de 5 de esos números. Pues bien, aunque entre la combinacion ganadora del dia x tenga 5 coincidencias con la combinación generada por el programa, puede ser que al generar las permutaciones en "per": 23,32,28,37,40 nunca la encuentre pues el segundo numero de la combinacion y el segundo de per son diferentes o el tercero de la combinación y el segundo de per... trato de buscar la lógica y no la veo. Ejemplo real..

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
  #5  
Antiguo Hace 1 Semana
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: Aug 2007
Ubicación: Barcelona, España
Posts: 1.447
Poder: 13
duilioisola Tiene un aura espectacularduilioisola Tiene un aura espectacular
Es tan simple como tener ordenados los números.
Si es una permutación:
Los valores no se repiten
El orden no importa.
Responder Con Cita
  #6  
Antiguo Hace 1 Semana
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: Jun 2011
Posts: 366
Poder: 7
danielmj Va por buen camino
Hola, lo sé. El problema es que el programa no fue capaz de encontrar cinco de los seis números de una combinación que si tuvo en su día cinco aciertos. De ahí mis dudas, la única forma de mostrarlo es con un vídeo del proceso pero es engorroso grabar un vídeo tras otro hasta conseguir uno válido. 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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Como puedo pasar este codigo a delphi el codigo de la imagen es codigo python Javier13 Varios 9 16-11-2017 15:41:33
Peticion de revision de metodos aguml C++ Builder 0 22-01-2015 12:43:48
Revision de printer.canvas cfernan Impresión 0 22-07-2010 16:40:11
Una Revision De Morfik, ASAPLTDA Debates 5 17-10-2008 19:16:27
Revision en segundo plano de una tabla paradox chrids506 Conexión con bases de datos 5 03-03-2007 18:37:51


La franja horaria es GMT +2. Ahora son las 20:28:41.


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