Creando diccionarios con Vb.Net

Creando diccionarios con Vb.Net

Creando diccionarios con Vb.Net

«Y la magia comienza.»

Veremos como crear un «Creador de Diccionarios con VB.NET«.

  • Crear el proyecto:

Underc0de - Creando proyecto diccionarios

  • Luego en el Form1 realizar la siguente interfaz (respetando nombres de controles):

Underc0de - creando diccionarios

  • Opcional:Underc0de - Modificando txt

 

Avanzando con la codificación, tendremos lo siguiente:

  • Arrbia de la clase Form1 colocamos lo siguiente:
    Imports System.IO 'importamos esta libreria para poder trabajar con archivos
  • Dentro de la clase del Form1 ingresamos:
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
  • Dentro del bntiniciar insertamos el siguiente fragmento de código:
'by 79137913 for Underc0de.org
        'creamos secuencia de caracteres a utilizar
        Dim Letras As String = "" 'string que contendra todos los caracteres a combinar para hacer el diccionario
        If checkNumeros.Checked Then Letras = Letras & Num 'si Numeros esta tildado agregamos eso a la cadena
        If checkSimbolos.Checked Then Letras = Letras & Sym 'si Simbolos esta tildado agregamos eso a la cadena
        If checkMinusculas.Checked Then Letras = Letras & Min 'si Letras Minusculas esta tildado agregamos eso a la cadena
        If checkMayusculas.Checked Then Letras = Letras & May 'si Letras Mayusculas esta tildado agregamos eso a la cadena
        If checkEspMin.Checked Then Letras = Letras & SpL 'si Letras Especiales Minusculas esta tildado agregamos eso a la cadena
        If checkEspMay.Checked Then Letras = Letras & SpU 'si Letras Especiales Mayusculas esta tildado agregamos eso a la cadena
        If checkAddMore.Checked Then Letras = Letras & txtAddMore.Text 'si Agregar Siguientes Caracters esta tildado agregamos eso a la cadena
 
        Dim CantLet As Long = Letras.Length - 1 'cantidad de letras
        Dim BufferPalabras As Long = 10000
        Dim Palabras(BufferPalabras) As String 'aqui se guardaran las combinaciones mientras las vamos generando en este ejemplo iremos guardando de a 10000 combinaciones
        Dim CT As Long = 0 'este contador nos dira cuantas palabras estan pendientes de guardar en el archivo
        Dim UbicacionArchivo As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Diccionario.txt" 'ubicacion del archivo de salida (en mis documentos)
        Dim CantPos As Long = 0 'Cantidad de letras palabra actual
        Dim Desde As Long = CInt(txtD.Text) 'desde que cantidad de caracteres
        Dim Hasta As Long = CInt(txtH.Text) 'hasta que cantidad de caracteres
        Dim Posiciones() As Long
 
 
        MsgBox("Se iniciara el proceso, puede tardar mucho, para detener cierre la aplicacion con el Administrador de Tareas.",, "ATENCION")
 
        Dim fs As FileStream = File.Create(UbicacionArchivo) 'creamos o sobreescribimos el archivo
        fs.Close() 'cerramos el archivo para que se pueda escribir
 
        For y = 0 To Hasta - Desde
            CantPos = Desde + y - 1 'establecemos el tamañode la combinacion actual
            ReDim Posiciones(CantPos)
            Do
 
                For x = 0 To CantPos 'una vez por cada posicion que tenga que tener la palabra
                    Palabras(CT) = Palabras(CT) & Letras(Posiciones(x)) 'armamos una combinacion uniendo los caracteres de la cadena letras
                Next x
 
                CT += 1 'incrementamos CT en 1
                Posiciones(0) += 1 'incrementamos la primera letra de posiciones (para que pase de "a" a "b" por ejemplo)
 
                For x = 0 To CantPos - 1 'nos fijamos si alguna posicion es mayor a la cantidad de letras si es asi volvemos a 0 esa posicion e incrementamos la siguiente
                    If Posiciones(x) > CantLet Then Posiciones(x) = 0 : Posiciones(x + 1) += 1
                Next
 
                If CT = BufferPalabras + 1 Then
                    File.AppendAllLines(UbicacionArchivo, Palabras) 'escribimos nuestro buffer de palabras en el archivo linea por linea
                    CT = 0 'volvemos el contador a 0
                    ReDim Palabras(BufferPalabras) 'borramos el buffer de palabras
                End If
            Loop Until Posiciones(CantPos) = CantLet + 1
        Next y
        If CT > 0 Then 'si hay palabras pendientes de escribir
            ReDim Preserve Palabras(CT - 1)
            File.AppendAllLines(UbicacionArchivo, Palabras) 'escribimos nuestro buffer de palabras en el archivo linea por linea
            CT = 0
        End If
        MsgBox("Terminado, mira en " & UbicacionArchivo & " , y encontraras el diccionario.",, "ATENCION")

El código completo del código será el siguiente:

Imports System.IO 'importamos esta libreria para poder trabajar con archivos
 
Public Class Form1
    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
 
    Private Sub btnIniciar_Click(sender As Object, e As EventArgs) Handles btnIniciar.Click
        'by 79137913 for Underc0de.org
        'creamos secuencia de caracteres a utilizar
        Dim Letras As String = "" 'string que contendra todos los caracteres a combinar para hacer el diccionario
        If checkNumeros.Checked Then Letras = Letras & Num 'si Numeros esta tildado agregamos eso a la cadena
        If checkSimbolos.Checked Then Letras = Letras & Sym 'si Simbolos esta tildado agregamos eso a la cadena
        If checkMinusculas.Checked Then Letras = Letras & Min 'si Letras Minusculas esta tildado agregamos eso a la cadena
        If checkMayusculas.Checked Then Letras = Letras & May 'si Letras Mayusculas esta tildado agregamos eso a la cadena
        If checkEspMin.Checked Then Letras = Letras & SpL 'si Letras Especiales Minusculas esta tildado agregamos eso a la cadena
        If checkEspMay.Checked Then Letras = Letras & SpU 'si Letras Especiales Mayusculas esta tildado agregamos eso a la cadena
        If checkAddMore.Checked Then Letras = Letras & txtAddMore.Text 'si Agregar Siguientes Caracters esta tildado agregamos eso a la cadena
 
        Dim CantLet As Long = Letras.Length - 1 'cantidad de letras
        Dim BufferPalabras As Long = 10000
        Dim Palabras(BufferPalabras) As String 'aqui se guardaran las combinaciones mientras las vamos generando en este ejemplo iremos guardando de a 10000 combinaciones
        Dim CT As Long = 0 'este contador nos dira cuantas palabras estan pendientes de guardar en el archivo
        Dim UbicacionArchivo As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Diccionario.txt" 'ubicacion del archivo de salida (en mis documentos)
        Dim CantPos As Long = 0 'Cantidad de letras palabra actual
        Dim Desde As Long = CInt(txtD.Text) 'desde que cantidad de caracteres
        Dim Hasta As Long = CInt(txtH.Text) 'hasta que cantidad de caracteres
        Dim Posiciones() As Long
 
 
        MsgBox("Se iniciara el proceso, puede tardar mucho, para detener cierre la aplicacion con el Administrador de Tareas.",, "ATENCION")
 
        Dim fs As FileStream = File.Create(UbicacionArchivo) 'creamos o sobreescribimos el archivo
        fs.Close() 'cerramos el archivo para que se pueda escribir
 
        For y = 0 To Hasta - Desde
            CantPos = Desde + y - 1 'establecemos el tamañode la combinacion actual
            ReDim Posiciones(CantPos)
            Do
 
                For x = 0 To CantPos 'una vez por cada posicion que tenga que tener la palabra
                    Palabras(CT) = Palabras(CT) & Letras(Posiciones(x)) 'armamos una combinacion uniendo los caracteres de la cadena letras
                Next x
 
                CT += 1 'incrementamos CT en 1
                Posiciones(0) += 1 'incrementamos la primera letra de posiciones (para que pase de "a" a "b" por ejemplo)
 
                For x = 0 To CantPos - 1 'nos fijamos si alguna posicion es mayor a la cantidad de letras si es asi volvemos a 0 esa posicion e incrementamos la siguiente
                    If Posiciones(x) > CantLet Then Posiciones(x) = 0 : Posiciones(x + 1) += 1
                Next
 
                If CT = BufferPalabras + 1 Then
                    File.AppendAllLines(UbicacionArchivo, Palabras) 'escribimos nuestro buffer de palabras en el archivo linea por linea
                    CT = 0 'volvemos el contador a 0
                    ReDim Palabras(BufferPalabras) 'borramos el buffer de palabras
                End If
            Loop Until Posiciones(CantPos) = CantLet + 1
        Next y
        If CT > 0 Then 'si hay palabras pendientes de escribir
            ReDim Preserve Palabras(CT - 1)
            File.AppendAllLines(UbicacionArchivo, Palabras) 'escribimos nuestro buffer de palabras en el archivo linea por linea
            CT = 0
        End If
        MsgBox("Terminado, mira en " & UbicacionArchivo & " , y encontraras el diccionario.",, "ATENCION")
    End Sub
End Class

Al insertar el código queda iniciar (F5) y empezar a usarlo; debemos seleccionar los caracteres que quieran usar o colocar caracteres a elección en el cuadro de texto, seleccionando el checkAddMore, luego presionamos Button1.

Underc0de - Creador de diccionarios

 


Agradecemos a 79137913 por compartir conocimientos para crear un creador de diccionarios.

Posts Relacionados

Comments

comments

Written By

xyz

Leave a Reply

×