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 Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #27  
Antiguo 17-04-2018
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
He cambiado el código a esto:
Código Delphi [-]
procedure TForm1.Button10Click(Sender: TObject);
var
  cad1:Int64;
  i:integer;
begin
  //Recorro la lista1
  with per do
    for i := 0 to Count -1 do
    begin
      // Calculo CAD1 cada vez que cambia el indice de lista3
      ItemIndex := i;
      //convierto el string separado por espacios a una lista
      list.delimitedText:=Items[i];
      cad1:= ValorCombinacion(list);
      buscarComunes(cad1);
    end;

Buscar Comunes
Código Delphi [-]
procedure TForm1.buscarComunes(const Cad1:Int64);
var
  cad2:Int64;
  j:integer;

begin
  // Recorro la lista2
   with lista3 do
   for j := 0 to Items.Count -1 do
   begin
     lista3.Selected:= items[j];
     //convierto el string separado por espacios a una lista
     list.delimitedText:= items.Item[j].SubItems[0]+ ' '+
                          items.Item[j].SubItems[1]+ ' '+
                          items.Item[j].SubItems[2]+ ' '+
                          items.Item[j].SubItems[3]+ ' '+
                          items.Item[j].SubItems[4]+ ' '+
                          items.Item[j].SubItems[5];
     // Calculo CAD2 cada vez que cambia el indice de per
     cad2 := ValorCombinacion(list);
     CompararCombinaciones(cad1, cad2);
   end;
end;

Código Delphi [-]
procedure TForm1.CompararCombinaciones(const Cad1, cad2:Int64);
var
  res:Int64;
  comunes:string;
begin
  label21.Caption:= IntToStr(cad1);
  res:=cad1 and cad2;
  if (cad1 = cad2) then begin
    // las dos combinaciones son iguales
    ShowMessage('Iguales');
    exit;
  end

//*** Esto lo tengo desactivado por que me dice "no hay coincidencias" por cada linea que compara.
{  else //if (res <> 0) then
    showMessage('No hay coincidencias');
    form1.timer1.Enabled:= false;
    form1.Refresh;
    exit}
end;

Parece que recorre la lista3 y lo compara con per pero incluso habiendo una combinación real de 5 aciertos sigue sin encontrarla, además el proceso es eterno, tarda como 1 seg. por cada comparacion y eso que solo son 120 permutaciones, cuando sean 720 y 50.000 combinaciones aleatorias... no sería factible creo.
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
 



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
sumando valores de un listview danielmj Varios 28 14-11-2014 21:52:30
VALORES FANTASMAS FIREBIRD 2.1 valores Grandes ASAPLTDA Firebird e Interbase 17 02-12-2012 12:09:02
Rellenar con 0.... buitrago Varios 6 17-11-2011 20:02:53
¿Cómo insertar una imágen en un lisbox o un memo? Acuarius3000 Gráficos 3 27-06-2005 08:44:53
arastrar archivos a un lisbox gulder C++ Builder 3 05-05-2005 13:31:50


La franja horaria es GMT +2. Ahora son las 16:49:20.


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