Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: minette1988 en 24 Mayo 2010, 11:44 am



Título: decir si un caracter es vocal, consonante, número o signo de puntuación
Publicado por: minette1988 en 24 Mayo 2010, 11:44 am
Hola, tengo que hacer un script que pida por teclado un carácter y determine si es una vocal, consonante, número o signo de puntuación. ¿Podéis echarme una mano?, ando muy perdida con esto de Visual Basic y el jueves tengo examen. Gracias.


Título: Re: decir si un caracter es vocal, consonante, número o signo de puntuación
Publicado por: Psyke1 en 24 Mayo 2010, 14:56 pm
Mira este ejemplo que hice:

Código
  1. Rem añade un TextBox llamado Text1 y un CommandButton llamado Command1
  2.  
  3. Private Sub Command1_Click()
  4.    Call Comprobar_Caracter(Text1.Text)
  5. End Sub
  6.  
  7. Private Sub Form_Load()
  8.    Text1.MaxLength = 1
  9. End Sub
  10.  
  11. Private Sub Comprobar_Caracter(Cadena As String)
  12.    If Len(Cadena) > 1 Then MsgBox "Solo se puede analizar un caracter", vbCritical, "Error": Exit Sub
  13.    Dim Vocal As String, Consonante As String, Numero As String
  14.    Vocal = "aeiou"
  15.    Consonante = "bcdfghjklmnñpqrstvwxyz"
  16.    Numero = "1234567890"
  17.    If Not InStr(1, Vocal, Cadena) = 0 Then
  18.        MsgBox "El caracter """ & Cadena & """ es una vocal", vbInformation
  19.    ElseIf Not InStr(1, Consonante, Cadena) = 0 Then
  20.        MsgBox "El caracter """ & Cadena & """ es una consonante", vbInformation
  21.    ElseIf Not InStr(1, Numero, Cadena) = 0 Then
  22.        MsgBox "El caracter """ & Cadena & """ es un número", vbInformation
  23.    Else
  24.        MsgBox "El caracter """ & Cadena & """ es un símbolo", vbInformation
  25.    End If
  26. End Sub

Espero haberte ayudado... ;)


Título: Re: decir si un caracter es vocal, consonante, número o signo de puntuación
Publicado por: Dessa en 24 Mayo 2010, 16:22 pm
Hola PsYkE1, otra opcion seria

Código:

Option Explicit

Private Sub Form_DblClick()
  Me.Cls
End Sub

Private Sub Form_Load()
  Me.AutoRedraw = True
  StartHook
End Sub

Private Sub Form_Unload(Cancel As Integer)
  StopHook
End Sub



Código:

Option Explicit

Private Declare Function SetWindowsHookEx Lib "user32.dll" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32.dll" (ByVal hHook As Long) As Long
Dim hHook As Long

Public Sub StartHook()
    hHook = SetWindowsHookEx(13, AddressOf KeyProc, App.hInstance, 0)
End Sub
 
Public Sub StopHook()
    Call UnhookWindowsHookEx(hHook)
End Sub
 
Private Function KeyProc(ByVal nCode As Long, ByVal wParam As Long, lParam As Long) As Long

Form1.Caption = lParam
   
If wParam = 257 Then
    If lParam > 47 And lParam < 58 Then
        Form1.Print lParam & vbTab & Chr(lParam) & vbTab & "Numero"
    ElseIf lParam > 64 And lParam < 91 Then
        If lParam = 65 Or lParam = 69 Or lParam = 73 Or lParam = 79 Or lParam = 85 Then
            Form1.Print lParam & vbTab & Chr(lParam) & vbTab & "Letra Vocal"
        Else
            Form1.Print lParam & vbTab & Chr(lParam) & vbTab & "Letra Consonante"
        End If
    Else
        Form1.Print lParam & vbTab & Chr(lParam) & vbTab & "Ni letra ni numero"
    End If
End If

End Function






Título: Re: decir si un caracter es vocal, consonante, número o signo de puntuación
Publicado por: Psyke1 en 24 Mayo 2010, 16:40 pm
Muy interesante Dessa!! ;)


Título: Re: decir si un caracter es vocal, consonante, número o signo de puntuación
Publicado por: [L]ord [R]NA en 24 Mayo 2010, 16:57 pm
Le han hecho la tarea al usuario.


Título: Re: decir si un caracter es vocal, consonante, número o signo de puntuación
Publicado por: Dessa en 24 Mayo 2010, 17:03 pm
La proxima te pedimos permiso ...


Título: Re: decir si un caracter es vocal, consonante, número o signo de puntuación
Publicado por: [D4N93R] en 24 Mayo 2010, 17:03 pm
un hook para una tarea ta simple, se complicaron mucho ..

PD: Si , ya le hicieron la tarea del cole xD


Título: Re: decir si un caracter es vocal, consonante, número o signo de puntuación
Publicado por: Dessa en 24 Mayo 2010, 17:06 pm

Hola PsYkE1, otra opcion seria


me dirigia a PsYkE1, ya que se habló de un tema parecido en otro hilo del foro de VB6










Título: Re: decir si un caracter es vocal, consonante, número o signo de puntuación
Publicado por: Psyke1 en 24 Mayo 2010, 17:15 pm
mmmmm
Teneis razon, quizas le hice los deberes... :-\
Aun asi, me sirvio para aprender una cosa nueva... :)

Salu2!


Título: Re: decir si un caracter es vocal, consonante, número o signo de puntuación
Publicado por: cobein en 24 Mayo 2010, 19:51 pm
Me parece que esta manera es mejor para determinar el tipo de caracter puesto que funciona con ê,ñ, etc.

Código:
Option Explicit

Private Declare Function IsCharAlpha Lib "user32" Alias "IsCharAlphaA" (ByVal cChar As Byte) As Long
Private Declare Function IsCharAlphaNumeric Lib "user32" Alias "IsCharAlphaNumericA" (ByVal cChar As Byte) As Long
'-1 - Error
' 0 - Symbol
' 1 - Vowel
' 2 - Consonant
' 3 - Number
Private Function CharacterKind(ByVal sChar As String) As Long
    Dim bChar As Byte
   
    If Len(sChar) = 1 Then
        bChar = Asc(UCase(sChar))
        If IsCharAlphaNumeric(bChar) Then
            If IsCharAlpha(bChar) Then
                Select Case bChar
                    Case 65, 69, 73, 79, 85
                        CharacterKind = 1
                    Case Else
                        CharacterKind = 2
                End Select
            Else
                CharacterKind = 3
            End If
        End If
    Else
        CharacterKind = -1
    End If
   
End Function


Título: Re: decir si un caracter es vocal, consonante, número o signo de puntuación
Publicado por: ssccaann43 © en 24 Mayo 2010, 20:13 pm
Puff, tremenda solución Cobein...! Me gusta...! :D


Título: Re: decir si un caracter es vocal, consonante, número o signo de puntuación
Publicado por: Dessa en 25 Mayo 2010, 00:17 am
No conocía esas Apis, buen aporte.