Hola danielmj
En tu código en cuanto a la parte estrictamente de programación hay algunos errores:
- Asignas el valor MAX a los progressBar dentro de los bucles, eso hace que esta operación se realice en cada ciclo del propio bucle sin necesidad. Esta inicialización hay que hacerla al principio fuera del bucle y solo una vez. Y dentro del bucle solo actualizar el campo Position del progressBar
Cita:
Empezado por danielmj
Código Delphi [-]
for i := 0 to lista3.Items.Count -1 do
begin
barra.Max:= lista3.Items.Count;
barra.Position:= i+1;
end;
|
La forma correcta es esta:
Código Delphi
[-]
barra.Max:= lista3.Items.Count;
for i := 0 to lista3.Items.Count -1 do
begin
barra.Position:= i+1;
end;
-La variable list:TStringList la declaras en la sección private del form y luego a nivel local dentro del var del procedure TForm1.Button10Click, por lo que al llamarlo desde dentro del procedure, vas a usar la variable local ademas parece que no esta inicializada, por lo que obtendrás un error de access violation
- En esta parte del código, primero muestras el contenido de una variable que aun no has asignado, y mas adelante es cuando le asignas el valor.
Cita:
Empezado por danielmj
Código Delphi [-]
procedure TForm1.buscarComunes(const Cad1:Int64);
...
form1.label22.Caption:= IntToStr(cad2);
...
cad2 := ValorCombinacion(list);
...
end;
|
En general te recomiendo que separes la parte del calculo de la parte visual y de muestreo de datos. Te quedara un código mucho mas limpio.
-En el
procedure CompararCombinaciones has eliminado toda la parte correspondiente a la búsqueda de los números que coinciden cuando las dos combinaciones no son exactamente iguales (variable res)
Cita:
Empezado por danielmj
Código Delphi [-]
procedure TForm1.CompararCombinaciones(const Cad1, cad2:Int64);
var
res:Int64;
comunes:string;
begin
res:=cad1 and cad2;
if (cad1 = cad2) then begin
ShowMessage('Iguales');
end
else
showMessage('No hay coincidencias');
form1.timer1.Enabled:= false;
form1.Refresh;
exit
end;
|
- El
procedure combinatoria2(v: array of Integer; Serie: TStrings); no tengo claro lo que quieres hacer con el, lo único que hace es cambiar el orden en que se obtiene los elementos de esa determinada combinación en particular, pero en realidad siempre obtienes la misma combinación en distinto orden de sus elementos. Y si lo que buscas es un sistema tipo LOTO, el orden de los elementos no influye. Aquí tienes los datos que muestras en tu vídeo, correspondientes todos ellos a la misma combinación:
Código:
1 4 5 12 24
1 4 5 24 12
1 4 12 5 24
1 4 12 24 5
1 4 24 5 12
1 4 24 12 5
Si mi ejemplo, que lo único que hace es buscar los numero que coinciden dentro de dos combinaciones,
te ha servido y es lo que estas intentando implementar, entonces intenta entender su funcionamiento, y en base a ese ejemplo haz tus propias modificaciones. Si no es eso exactamente lo que necesitas, entonces como te comento Mamcx el problema es que no esta muy claro lo que pretendes obtener
Cita:
Empezado por mamcx
Ni el video ni la imagen es clara. Lo que necesitas es un ejemplo minimo de los datos (la imagen habla de los numeros mas repetidos pero eso no se ve).
|
Un saludo