Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: el_c0c0 en 3 Noviembre 2008, 00:01 am



Título: como filtrar caracteres en un texto (snippet)
Publicado por: el_c0c0 en 3 Noviembre 2008, 00:01 am
hola!
bueno este codigo surgio para ayudar a un amigo a hacer un filtro en un textbox.. el lo queria para filtrar caracteres para cambiar la clave de windows XP...

es muy simple, basico:
Código
  1. Dim sInclude As String
  2.  
  3. Private Sub Form_Load()
  4.    sInclude = "bcdfghjkmpqrtvwxy2346789"
  5. End Sub
  6.  
  7. Private Sub Text1_Change()
  8. Dim iTemp   As Integer
  9. Dim sLetra  As String
  10. Dim sTotal  As String
  11. Dim iPos    As Integer
  12. Dim bSetNew As Boolean
  13.  
  14.    For iPos = 1 To Len(Text1.Text)
  15.        sLetra = Mid(Text1.Text, iPos, 1)
  16.        If InStr(1, LCase(sInclude), LCase(sLetra)) > 0 Then
  17.            sTotal = sTotal & sLetra
  18.        Else
  19.            bSetNew = True
  20.        End If
  21.    Next iPos
  22.  
  23.    If bSetNew Then
  24.        iTemp = Text1.SelStart
  25.        Text1.Text = sTotal
  26.        Text1.SelStart = IIf(iTemp > 0, iTemp - 1, iTemp)
  27.    End If
  28. End Sub
  29.  
  30.  

espero q sirva de algo, saludos!


Título: Re: como filtrar caracteres en un texto (snippet)
Publicado por: BlackZeroX en 4 Noviembre 2008, 06:23 am
tu codigo esta bien pero me parece algo grande y con muchas lineas je mira prueba esto.

Crea un nuevo proyecto y agrega un formulario tantos textobox cuales quieras (este codigo sirve para tantos textbox desees utilizando una clase para ahorrar codigo y no escribir nada de codigo en el formulario ja facil xP)

En una clase llamada:    class1

Código
  1. Dim WithEvents TXT As textbox
  2. Public Sub FixString(obj As textbox)
  3.    Set TXT = obj
  4. End Sub
  5. Private Sub TXT_KeyPress(KeyAscii As Integer)
  6.    If (KeyAscii >= 65 And KeyAscii <= 90) Or (KeyAscii >= 97 And KeyAscii <= 122) Then Exit Sub
  7.    KeyAscii = 0
  8. End Sub
  9.  

Esto en un modulo:

Código
  1. Public AAA As New Class1
  2. Sub main()
  3.    Form1.Show
  4.    AAA.FixString Form1.Text1
  5. End Sub
  6.  

Ahora solo configura tu proyecto para que arranque desde el proceso MAIN()  que tenemos hubicado en el modulo.

P.D.: se me olvido como usar las propiedades Let y Get en la clases por eso no los puse y use una funcion que de igual forma sirve ja.


Título: Re: como filtrar caracteres en un texto (snippet)
Publicado por: Karcrack en 4 Noviembre 2008, 16:48 pm
No seria mas simple una funcion por ejemplo asi?:
Código
  1. 'Por defecto la funcion solo filtra los numeros y el punto '.'
  2. Public Function IsCharacterHere(ByVal sCharacter As String, Optional ByVal bCaseInsensitive As Boolean = False, Optional ByVal sFilter As String = "0123456789.") As Boolean
  3.    If sCharacter <> "" Then
  4.        If InStr(1, sFilter, sCharacter, IIf(bCaseInsensitive = False, Empty, vbTextCompare)) <> 0 Then
  5.            IsCharacterHere = True
  6.        End If
  7.    End If
  8. End Function
  9.  
  10. Private Sub Text1_KeyPress(KeyAscii As Integer)
  11.    'Solo permite poner las caracteres alfabeticos del teclado... (Es caseInsensitive,da igual minisculas que mayusculas)
  12.    If IsCharacterHere(Chr$(KeyAscii), True, "qwertyuiopasdfghjklzxcvbnm") = False Then
  13.        KeyAscii = 0
  14.    End If
  15. End Sub

Es lo mas corto (y completo) que he tenido tiempo de hacer :P

Saludos :D


Título: Re: como filtrar caracteres en un texto (snippet)
Publicado por: el_c0c0 en 5 Noviembre 2008, 01:43 am
gracias por contestar, pero los dos estan equivocados.. lo que ustedes plantean es keypress o keydown, pero se olvidan q alguien puede pegar caracteres y no escribirlos.. ahi esta la diferencia

saludos


Título: Re: como filtrar caracteres en un texto (snippet)
Publicado por: BlackZeroX en 5 Noviembre 2008, 04:53 am
xD je hay otra forma me parece que enviandole un mensaje con api pero no recuerdo como era (si es que lo hay o cual me fume?... ya no hay pasto en mi jardin jaja)...ˇ!


Título: Re: como filtrar caracteres en un texto (snippet)
Publicado por: Karcrack en 5 Noviembre 2008, 14:40 pm
gracias por contestar, pero los dos estan equivocados.. lo que ustedes plantean es keypress o keydown, pero se olvidan q alguien puede pegar caracteres y no escribirlos.. ahi esta la diferencia

saludos
Es cierto :xD, en ese caso tu codigo es funcional :D, pero se puede evitar que se pege o copien cosas en un Texbox, para evitar recorrer toda la cadena cada vez, lo que hace que el programa consuma demasiados recursos (En caso de que la cadena sea largaaaa. :xD)

Saludos ;)