HOLA!!!
Bueno... es un creador de diccionarios ni mas ni menos, pero al trabajar con strings anda rapido. Igual funciona bastante bienn :P.
Siguiendo... les dejo una captura, el source y el binario.
(http://oi54.tinypic.com/2jezi8w.jpg)
Es mas para ejemplo que para usarlo, pero si no tenemos nada funciona :P.
Const Sym As String = "/\!·$%&/()='""¡¿?<>., :;-_*+" 'Simbolos
Const Num As String = "0123456789" 'Numeros
Const Min As String = "abcdefghijklmnopqrstuvwxyz" 'Letras Minusculas
Const May As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 'Letras Mayusculas
Const SpL As String = "áéíóúàèìòùâêîôûäëïöüçñ" 'Letras Especiales Minusculas
Const SpU As String = "ÁÉÍÓÚÀÈÌÒÙÊÎÔÛÄËÏÖÜÇÑ" 'Letras Especiales Mayusculas
Dim Cad As String 'Cadena entera de caracteres
Dim X As Long 'Para los Bucles
Private Sub Inicio()
Dim Letras() As String
Dim Posiciones() As Long
Dim Palabras() As String
Dim a As Long
Dim CT As Long
Dim CantPos As Long
Dim CantLet As Long
Letras = CharSplit7913(Cad)
CantLet = UBound(Letras)
Open "C:\Dic7913.txt" For Output As #1
Close #1
ReDim Palabras(1000)
For a = 0 To Val(MinMaxL(1).Text) - Val(MinMaxL(0).Text)
CantPos = MinMaxL(0) + a - 1
ReDim Posiciones(CantPos)
Do
For X = 0 To CantPos
Palabras(CT) = Palabras(CT) & Letras(Posiciones(X))
Next
CT = CT + 1
Posiciones(0) = Posiciones(0) + 1
For X = 0 To CantPos - 1
If Posiciones(X) > CantLet Then Posiciones(X) = 0: Posiciones(X + 1) = Posiciones(X + 1) + 1
Next
If CT = 1001 Then
Open "C:\Dic7913.txt" For Append As #1
For X = 0 To 1000
Print #1, Palabras(X)
Next
Close #1
ReDim Palabras(1000)
CT = 0
End If
If Posiciones(CantPos) = CantLet + 1 Then GoTo Terminado
Loop
Terminado:
Next
If CT <> 0 Then
Open "C:\Dic7913.txt" For Append As #1
For X = 0 To CT
Print #1, Palabras(X)
Next
Close #1
CT = 0
End If
MsgBox "Terminado", vbInformation, "Atencion"
End Sub
Private Sub Caracteres_Click(Index As Integer)
'Limita el checkbox de los caracteres extra si el cuadro de texto esta vacio
If Index = 6 And Len(ExtraCHR.Text) = 0 Then Caracteres(6).Value = 0: MsgBox "El cuadro de texto de caracteres extra debe tener al menos un caracter", vbCritical, "Error"
End Sub
Private Sub Go_Click()
Dim FlagCheck As Boolean
'Comprobacion de los minimos y maximos de longitud
If Val(MinMaxL(0).Text) = 0 Then MsgBox "El minimo de longitud no puede ser cero", vbCritical, "Error": Exit Sub
If Val(MinMaxL(1).Text) = 0 Then MsgBox "El maximo de longitud no puede ser cero", vbCritical, "Error": Exit Sub
If Val(MinMaxL(0).Text) - Val(MinMaxL(1).Text) > 0 Then MsgBox "El maximo de longitud no puede ser menor que el minimo", vbCritical, "Error": Exit Sub
'Comprobacion de los checkboxes, minimo uno debe estar tildado
For X = 0 To 6
If Caracteres(X).Value = 1 Then FlagCheck = True
Next
If FlagCheck = False Then MsgBox "Seleccione primero con que caracteres quiere hacer el diccionario", vbCritical, "Error": Exit Sub
Cad = vbNullString 'Vacio el string Cad por si estaba lleno
'Lleno cad con la seleccion del usuario
If Caracteres(0).Value = 1 Then Cad = Num
If Caracteres(1).Value = 1 Then Cad = Cad & Sym
If Caracteres(2).Value = 1 Then Cad = Cad & Min
If Caracteres(3).Value = 1 Then Cad = Cad & Max
If Caracteres(4).Value = 1 Then Cad = Cad & SpL
If Caracteres(5).Value = 1 Then Cad = Cad & SpU
If Caracteres(6).Value = 1 Then Cad = Cad & ExtraCHR.Text
MsgBox "El Proceso esta por Comenzar, esto podria tardar mucho tiempo para frenarlo presione Ctrl+Shift+Esc y termine el proceso, el diccionario quedara incompleto (este se guarda en c:\Dic7913.txt)", vbInformation, "Atencion - Por Comenzar"
Call Inicio ' llamo al inicio de proceso
End Sub
Private Sub MinMaxL_KeyPress(Index As Integer, KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0 'Verifica que solo se ingresen numeros en el desde hasta.
End Sub
Private Function CharSplit7913(expression As String) As String()
Dim lExp As Long
Dim ExpB() As Byte
Dim AuxArr() As String
ExpB = expression
lExp = UBound(ExpB)
ReDim AuxArr(lExp)
For X = 0 To lExp Step 2
AuxArr(X / 2) = ChrW(ExpB(X))
Next
ReDim Preserve AuxArr(Int(lExp / 2))
CharSplit7913 = AuxArr
End Function
Descargar Source y Binario:
http://www.mediafire.com/?ma3l3278prf61wb
GRACIAS POR LEER!!!
una pregunta genera todas las posibilidades? por ejemplo si le digo 1 de logitud letras mayusculas me muestra las 25? ufff igual esta muy bueno gracias eso si le aplico un cambio tal vez poco significativo, el agregar la ñ y la Ñ a las letras minusculas y mayusculas no especiales ..
Saludos