Hola Daniel,
Vuelves a mezclar mucho código de distintas cosas generando un caos en el código... Divide y vencerás!! esa es la técnica que tienes que utilizar, haz pequeñas funciones o procedimientos donde realice las mínimas acciones posibles y minimices los posibles errores, en particular tu código que has puesto podría quedar algo así:
Código Delphi
[-]
function TForm1.GetComboBoxValue: Integer;
begin
result:=0;
with combobox1, items do
if Itemindex>=0 then
try
result:=StrToInt(Items[itemIndex]);
except
end;
end;
procedure TForm1.GenerarCombinacionesAleatorias(const Numero:Integer);
var
i:longint;
begin
setLength(listCombinaciones, Numero);
for i:=0 to High(listCombinaciones) do
listCombinaciones[i].aleatorio;
end;
function TForm1.BuscarMejorcombinacion: Tcombinacion;
begin
...
end;
procedure TForm1.Button9Click(Sender: TObject);
var
NumeroDeElementos:Integer;
CombinacionMaestra:TCombinacion;
begin
NumeroDeElementos:=GetComboBoxValue;
GenerarCombinacionesAleatorias(NumeroDeElementos);
CombinacionMaestra:=BuscarMejorcombinacion;
CompararCombinacionesAleatorias(CombinacionMaestra);
end;
no se por que utilizas aquí un case, Poner un case por cada opción del combobox ademas de no ser muy eficiente, es duplicar código y complicar el proceso
Cita:
Empezado por danielmj
Código Delphi [-]...
...
case comb.ItemIndex of
0: begin
...
|
¿Por que no te hace los ciclos que tu quieres? pues seguramente este asignando el numero de elementos de la variable list* incorrectamente.
*.- te recomiendo que a las variables importantes y mas o menos globales les pongas nombres descriptivos que a simple vista sean fácilmente identificable.
Y en cuanto a CS1:
Cita:
Empezado por danielmj
Y por otra parte, veo que en cs1, juega con una combinacion arbitraria:
Código Delphi [-]cs1 := '23 45 17 15 22 36';
|
Esto no se por que lo has puesto así, CS1 solo es la representación en string de la combinación maestra, y se utiliza para no estar en cada ciclo repitiendo el proceso de convertir dicha combinación a string, combinación que una vez calculada ya no vuelve a cambiar nunca, y por ser un proceso relativamente lento, en definitiva para acelerar cada iteración
Código Delphi
[-]cs1 := CombinacionMaestra.AsString;