Hice un programa que genera todas las combinaciones posibles con "2" "3" "4" "5" "6" y "7" caracteres el problema es que tarda demasiado alguien sabe como acelerar el proceso. este es el codigo.
Necesita 11 LABEL
Un listbox
Un timer con intervalo de 100 (inicia enabled "false")
Y tres botones
Código
Public mil As Integer Public seg As Integer Public min As Integer Public hor As Integer Public cont As Long Public detener As Boolean Private Sub Command1_Click() 'Programa que genera todas las combinaciones posibles con "2","3","4","5","6", y "7" 'caracteres el metodo es un poco tardado pero solo asi he logrado generarlo 'Si deseas que se formen combinaciones con mas de "7" caracteres solo sigue la misma 'estructura 'Creado por Sergio Uziel Tovar Lemus Timer1.Enabled = True Label5.Caption = "Procesando" Command2.Enabled = False Command3.Enabled = True detener = False cont = 0 'Comienza a generar combinaciones con dos caracteres For chr_uno = Asc("a") To Asc("z") For chr_dos = Asc("a") To Asc("z") List1.AddItem Chr(chr_uno) & Chr(chr_dos) & Chr(chr_tres) & Chr(chr_cuatro) & Chr(chr_cinco) & Chr(chr_seis) & Chr(chr_siete) cont = cont + 1 Label2.Caption = cont If detener = True Then Command2.Enabled = True Command3.Enabled = False MsgBox "El proceso ha sido detenido por el usuario." & vbCrLf & vbCrLf & "Resultados obtenidos." & vbCrLf & vbCrLf & "Numeros de combinaciones: " & cont & vbCrLf & vbCrLf & "Tiempo transcurrido" & vbCrLf & Label6.Caption & vbCrLf & Label7.Caption & vbCrLf & Label8.Caption & vbCrLf & Label9.Caption & vbCrLf & vbCrLf & "Porcentaje del proceso: " & ProgressBar1.Value & "% de un 100% posible", vbInformation, "Informacion para el usuario" mil = 0 seg = 0 min = 0 hor = 0 Label6.Caption = "Horas: " & hor Label7.Caption = "Minutos: " & min Label8.Caption = "Segundos: " & seg Label9.Caption = "Milesimas: " & mil List1.Clear Label2.Caption = List1.ListCount Label5.Caption = "Detenido por el usuario" ProgressBar1.Value = 0 Exit Sub End If DoEvents Next chr_dos DoEvents Next chr_uno ProgressBar1.Value = ProgressBar1.Value + 18.3 'Ahora hace las combinaciones con tres caracteres For chr_uno = Asc("a") To Asc("z") For chr_dos = Asc("a") To Asc("z") For chr_tres = Asc("a") To Asc("z") List1.AddItem Chr(chr_uno) & Chr(chr_dos) & Chr(chr_tres) & Chr(chr_cuatro) & Chr(chr_cinco) & Chr(chr_seis) & Chr(chr_siete) cont = cont + 1 Label2.Caption = cont If detener = True Then Command2.Enabled = True Command3.Enabled = False MsgBox "El proceso ha sido detenido por el usuario." & vbCrLf & vbCrLf & "Resultados obtenidos." & vbCrLf & vbCrLf & "Numeros de combinaciones: " & cont & vbCrLf & vbCrLf & "Tiempo transcurrido" & vbCrLf & Label6.Caption & vbCrLf & Label7.Caption & vbCrLf & Label8.Caption & vbCrLf & Label9.Caption & vbCrLf & vbCrLf & "Porcentaje del proceso: " & ProgressBar1.Value & "% de un 100% posible", vbInformation, "Informacion para el usuario" mil = 0 seg = 0 min = 0 hor = 0 Label6.Caption = "Horas: " & hor Label7.Caption = "Minutos: " & min Label8.Caption = "Segundos: " & seg Label9.Caption = "Milesimas: " & mil List1.Clear Label2.Caption = List1.ListCount Label5.Caption = "Detenido por el usuario" ProgressBar1.Value = 0 Exit Sub End If DoEvents Next chr_tres DoEvents Next chr_dos DoEvents Next chr_uno ProgressBar1.Value = ProgressBar1.Value + 18.3 'Ahora hace las combinaciones con cuatro caracteres For chr_uno = Asc("a") To Asc("z") For chr_dos = Asc("a") To Asc("z") For chr_tres = Asc("a") To Asc("z") For chr_cuatro = Asc("a") To Asc("z") List1.AddItem Chr(chr_uno) & Chr(chr_dos) & Chr(chr_tres) & Chr(chr_cuatro) & Chr(chr_cinco) & Chr(chr_seis) & Chr(chr_siete) cont = cont + 1 Label2.Caption = cont If detener = True Then Command2.Enabled = True Command3.Enabled = False MsgBox "El proceso ha sido detenido por el usuario." & vbCrLf & vbCrLf & "Resultados obtenidos." & vbCrLf & vbCrLf & "Numeros de combinaciones: " & cont & vbCrLf & vbCrLf & "Tiempo transcurrido" & vbCrLf & Label6.Caption & vbCrLf & Label7.Caption & vbCrLf & Label8.Caption & vbCrLf & Label9.Caption & vbCrLf & vbCrLf & "Porcentaje del proceso: " & ProgressBar1.Value & "% de un 100% posible", vbInformation, "Informacion para el usuario" mil = 0 seg = 0 min = 0 hor = 0 Label6.Caption = "Horas: " & hor Label7.Caption = "Minutos: " & min Label8.Caption = "Segundos: " & seg Label9.Caption = "Milesimas: " & mil List1.Clear Label2.Caption = List1.ListCount Label5.Caption = "Detenido por el usuario" ProgressBar1.Value = 0 Exit Sub End If DoEvents Next chr_cuatro DoEvents Next chr_tres Next chr_dos DoEvents Next chr_uno ProgressBar1.Value = ProgressBar1.Value + 18.3 'Ahora comenzamos con cinco caracteres For chr_uno = Asc("a") To Asc("z") For chr_dos = Asc("a") To Asc("z") For chr_tres = Asc("a") To Asc("z") For chr_cuatro = Asc("a") To Asc("z") For chr_cinco = Asc("a") To Asc("z") List1.AddItem Chr(chr_uno) & Chr(chr_dos) & Chr(chr_tres) & Chr(chr_cuatro) & Chr(chr_cinco) & Chr(chr_seis) & Chr(chr_siete) cont = cont + 1 Label2.Caption = cont If detener = True Then Command2.Enabled = True Command3.Enabled = False MsgBox "El proceso ha sido detenido por el usuario." & vbCrLf & vbCrLf & "Resultados obtenidos." & vbCrLf & vbCrLf & "Numeros de combinaciones: " & cont & vbCrLf & vbCrLf & "Tiempo transcurrido" & vbCrLf & Label6.Caption & vbCrLf & Label7.Caption & vbCrLf & Label8.Caption & vbCrLf & Label9.Caption & vbCrLf & vbCrLf & "Porcentaje del proceso: " & ProgressBar1.Value & "% de un 100% posible", vbInformation, "Informacion para el usuario" mil = 0 seg = 0 min = 0 hor = 0 Label6.Caption = "Horas: " & hor Label7.Caption = "Minutos: " & min Label8.Caption = "Segundos: " & seg Label9.Caption = "Milesimas: " & mil List1.Clear Label2.Caption = List1.ListCount Label5.Caption = "Detenido por el usuario" ProgressBar1.Value = 0 Exit Sub End If DoEvents Next chr_cinco DoEvents Next chr_cuatro DoEvents Next chr_tres Next chr_dos DoEvents Next chr_uno ProgressBar1.Value = ProgressBar1.Value + 18.3 'Con seis caracteres For chr_uno = Asc("a") To Asc("z") For chr_dos = Asc("a") To Asc("z") For chr_tres = Asc("a") To Asc("z") For chr_cuatro = Asc("a") To Asc("z") For chr_cinco = Asc("a") To Asc("z") For chr_seis = Asc("a") To Asc("z") List1.AddItem Chr(chr_uno) & Chr(chr_dos) & Chr(chr_tres) & Chr(chr_cuatro) & Chr(chr_cinco) & Chr(chr_seis) & Chr(chr_siete) cont = cont + 1 Label2.Caption = cont If detener = True Then Command2.Enabled = True Command3.Enabled = False MsgBox "El proceso ha sido detenido por el usuario." & vbCrLf & vbCrLf & "Resultados obtenidos." & vbCrLf & vbCrLf & "Numeros de combinaciones: " & cont & vbCrLf & vbCrLf & "Tiempo transcurrido" & vbCrLf & Label6.Caption & vbCrLf & Label7.Caption & vbCrLf & Label8.Caption & vbCrLf & Label9.Caption & vbCrLf & vbCrLf & "Porcentaje del proceso: " & ProgressBar1.Value & "% de un 100% posible", vbInformation, "Informacion para el usuario" mil = 0 seg = 0 min = 0 hor = 0 Label6.Caption = "Horas: " & hor Label7.Caption = "Minutos: " & min Label8.Caption = "Segundos: " & seg Label9.Caption = "Milesimas: " & mil List1.Clear Label2.Caption = List1.ListCount Label5.Caption = "Detenido por el usuario" ProgressBar1.Value = 0 Exit Sub End If DoEvents Next chr_seis DoEvents Next chr_cinco DoEvents Next chr_cuatro DoEvents Next chr_tres Next chr_dos DoEvents Next chr_uno ProgressBar1.Value = ProgressBar1.Value + 18.3 'Finalmente con siete For chr_uno = Asc("a") To Asc("z") For chr_dos = Asc("a") To Asc("z") For chr_tres = Asc("a") To Asc("z") For chr_cuatro = Asc("a") To Asc("z") For chr_cinco = Asc("a") To Asc("z") For chr_seis = Asc("a") To Asc("z") For chr_siete = Asc("a") To Asc("z") List1.AddItem Chr(chr_uno) & Chr(chr_dos) & Chr(chr_tres) & Chr(chr_cuatro) & Chr(chr_cinco) & Chr(chr_seis) & Chr(chr_siete) cont = cont + 1 Label2.Caption = cont If detener = True Then Command2.Enabled = True Command3.Enabled = False MsgBox "El proceso ha sido detenido por el usuario." & vbCrLf & vbCrLf & "Resultados obtenidos." & vbCrLf & vbCrLf & "Numeros de combinaciones: " & cont & vbCrLf & vbCrLf & "Tiempo transcurrido" & vbCrLf & Label6.Caption & vbCrLf & Label7.Caption & vbCrLf & Label8.Caption & vbCrLf & Label9.Caption & vbCrLf & vbCrLf & "Porcentaje del proceso: " & ProgressBar1.Value & "% de un 100% posible", vbInformation, "Informacion para el usuario" mil = 0 seg = 0 min = 0 hor = 0 Label6.Caption = "Horas: " & hor Label7.Caption = "Minutos: " & min Label8.Caption = "Segundos: " & seg Label9.Caption = "Milesimas: " & mil List1.Clear Label2.Caption = List1.ListCount Label5.Caption = "Detenido por el usuario" ProgressBar1.Value = 0 Exit Sub End If DoEvents Next chr_siete DoEvents Next chr_seis DoEvents Next chr_cinco DoEvents Next chr_cuatro DoEvents Next chr_tres Next chr_dos DoEvents Next chr_uno Command2.Enabled = True ProgressBar1.Value = ProgressBar1.Value + 18.3 Label5.Caption = "Terminado" Timer1.Enabled = False mil = 0 seg = 0 min = 0 hor = 0 Label6.Caption = "Horas: " & hor Label7.Caption = "Minutos: " & min Label8.Caption = "Segundos: " & seg Label9.Caption = "Milesimas: " & mil MsgBox "El proceso ha terminado satisfactoriamente." & vbCrLf & vbCrLf & "Resultados obtenidos." & vbCrLf & vbCrLf & "Numeros de combinaciones: " & cont & vbCrLf & vbCrLf & "Tiempo transcurrido" & vbCrLf & Label6.Caption & vbCrLf & Label7.Caption & vbCrLf & Label8.Caption & vbCrLf & Label9.Caption & vbCrLf & vbCrLf & "Porcentaje del proceso: " & ProgressBar1.Value & "% de un 100% posible", vbInformation, "Informacion para el usuario" mil = 0 seg = 0 min = 0 hor = 0 Label6.Caption = "Horas: " & hor Label7.Caption = "Minutos: " & min Label8.Caption = "Segundos: " & seg Label9.Caption = "Milesimas: " & mil List1.Clear Label2.Caption = List1.ListCount Label5.Caption = "Detenido por el usuario" ProgressBar1.Value = 0 End Sub Private Sub Command2_Click() Label5.Caption = "Limpiando" List1.Clear Label2.Caption = List1.ListCount Label5.Caption = "Detenido" End Sub Private Sub Command3_Click() detener = True Timer1.Enabled = False End Sub Private Sub Command8_Click() End Sub Private Sub Command9_Click() End Sub Private Sub Form_Load() Label1.Caption = "combinaciones generadas: " Label2.Caption = List1.ListCount Label6.Caption = "Horas: " & hor Label7.Caption = "Minutos: " & min Label8.Caption = "Segundos: " & seg Label9.Caption = "Milesimas: " & mil End Sub Private Sub Timer1_Timer() mil = mil + 1 Label6.Caption = "Horas: " & hor Label7.Caption = "Minutos: " & min Label8.Caption = "Segundos: " & seg Label9.Caption = "Milesimas: " & mil If mil = 10 Then mil = 0 seg = seg + 1 If seg = 60 Then seg = 0 min = min + 1 If min = 60 Then min = 0 hor = hor + 1 End If End If End If End Sub