Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Sustitución de caracteres

Estas en el tema de Sustitución de caracteres en el foro de Visual Basic clásico en Foros del Web. Buenas, buscando por este mismo foro he encontrado un post donde "explican" cómo realizar uan sustitución de caracteres en visual basic...: El código que dan ...
  #1 (permalink)  
Antiguo 05/10/2009, 15:41
KazerPowa
Invitado
 
Mensajes: n/a
Puntos:
Sustitución de caracteres

Buenas,

buscando por este mismo foro he encontrado un post donde "explican" cómo realizar uan sustitución de caracteres en visual basic...:



El código que dan es éste:

Código:
Public Function Cifrado(ByVal Entrada As String, _
                        Optional CodigoOriginal As String = " abcdefghijklmnñopqrstuvwxyz", _
                        Optional CodigoCifrado As String = " zyxwvutsrqpoñnmlkjihgfedcba") As String
Dim i As Long
Dim j As Long
Dim retStr As String
Dim c As String * 1
    
    Entrada = LCase(Entrada)
    
    For i = 1 To Len(Entrada)
        c = Mid(Entrada, i, 1)
        j = InStr(1, CodigoOriginal, c)
        If j > 0 Then
            retStr = retStr & Mid(CodigoCifrado, j, 1)
        Else
            retStr = retStr & c
        End If
    Next i
    
    Cifrado = retStr
End Function
...pero no sé muy bien cómo aplicarlo....hice esto, no sé qué le pasa pero no funciona, bueno ahí va:

PARTE DEL BOTÓN
Código:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox3.Text = Function (Cifrado(entrada = TextBox2.Text))
    End Sub
PARTE DE LA FUNCIÓN
Código:
Public Function Cifrado(ByVal Entrada As String, _
                        Optional ByVal CodigoOriginal As String = " abcdefghijklmnñopqrstuvwxyz", _
                        Optional ByVal CodigoCifrado As String = " zyxwvutsrqpoñnmlkjihgfedcba") As String
        Dim i As Long
        Dim j As Long
        Dim retStr As String
        Dim c As String

        Entrada = LCase(Entrada)

        For i = 1 To Len(Entrada)
            c = Mid(Entrada, i, 1)
            j = InStr(1, CodigoOriginal, c)
            If j > 0 Then
                retStr = retStr & Mid(CodigoCifrado, j, 1)
            Else
                retStr = retStr & c
            End If
        Next i

        Cifrado = retStr
    End Function
Una ayudita.....gracias
  #2 (permalink)  
Antiguo 05/10/2009, 17:39
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Sustitución de caracteres

He probado la primera función y funciona perfectamente, lo que no está correcto es el modo de llamarla.
O usas un VB muy moderno que admite eso, o tienes que cambiar el código del Button1.

¿No te da error ahí?

En fin, te explico:
La función devuelve cifrado el texto que le mandes.
Si solo la ejecutas como:
MsgBox Cifrado("Text1") ' Text1 es lo que yo le he mandado
Te devuelve "gvcg1", que es el texto Text1 cifrado con los caracteres que trae la función por defecto.
Si quieres usar otros caracteres puedes hacerlo incluyendolos en la llamada a la función o cambiando los de la propia declaración de la función.

Espero haber aclarado algo.

Por cierto, la he probado en VB6. Quizá tu problema es que haya que adaptarla a tu VB si es más moderno.

Saludos

Última edición por pkj; 05/10/2009 a las 17:46
  #3 (permalink)  
Antiguo 06/10/2009, 12:09
KazerPowa
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Sustitución de caracteres

Efectivamente Visual Basic se vuelve loco en la parte del boton.....bastantes errores da si xDD

Gracias, tu código funcionó a la perfección...no es que mi VB sea moderno...es que el código ese que puse en la parte del botón me lo inventé como quien dice xD

Uso Visual Studio 2008, nada especial.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:22.