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

Ayuda con login y matrices

Estas en el tema de Ayuda con login y matrices en el foro de Visual Basic clásico en Foros del Web. Bueno, acabo de comenzar a usar Visual Basic (con el programa 2008), estoy haciendo ejercicios varios y el caso es que tengo un problema el ...
  #1 (permalink)  
Antiguo 26/09/2009, 12:31
 
Fecha de Ingreso: septiembre-2009
Mensajes: 2
Antigüedad: 14 años, 7 meses
Puntos: 0
Ayuda con login y matrices

Bueno, acabo de comenzar a usar Visual Basic (con el programa 2008), estoy haciendo ejercicios varios y el caso es que tengo un problema el cual no consigo solucionar, puede que no me de cuenta del error y lo tenga en frente de las narices, estoy desesperado.

Lo que trato de hacer es hacer que en el formulario se reconozca una serie de usuarios y contraseñas (la única forma más fácil y para prácticar que se me ocurre es mediante una matriz bidimensional). A la hora de intentar probar un usuario y contraseña introducidos por una persona tiene que ir probando los datos de la matriz pero me da error.

He probado con un for o bien con un do while pero sigue sin funcionar como quiero. Os dejo el código por si hay algo mal (está incompleto).
Código:
Dim Intento As Integer = 1

[...]

Private Sub aceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles aceptar.Click
        Dim Matriz(5, 2) As String
        Dim i As Integer = 1

        Matriz(1, 1) = "user"
        Matriz(1, 2) = "pass"
        Matriz(2, 1) = "user2"
        Matriz(2, 2) = "pass2"
        Matriz(3, 1) = "user3"
        Matriz(3, 2) = "pass3"
        Matriz(4, 1) = "user4"
        Matriz(4, 1) = "pass4"
        Matriz(5, 1) = "user5"
        Matriz(5, 1) = "pass5"

       If (Intento = 3) Then
            MsgBox("Error")
            BoxUsuario.Enabled = False
            BoxContrasena.Enabled = False
            aceptar.Enabled = False
       Else
            If (Matriz(i, 1) = BoxUsuario.Text.ToLower) Then
                If (Matriz(i, 2) = BoxContrasena.Text.ToLower) Then
                     MsgBox("Conexión aceptada")
                Else
                     MsgBox("Contraseña incorrecta")
                     Intento = Intento + 1
                End If
             Else
                MsgBox("Usuario no reconocido")
                Intento = Intento + 1
             End If
       End If
End Sub
  #2 (permalink)  
Antiguo 26/09/2009, 22:16
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Ayuda con login y matrices

Hola, no mira para hacerlo un poco mejor podes crearte 2 matrices, una que guarde los nombres de usuarios y otra que contenga los passwords pero estos en orden a los usuarios de matriz primera...entonces despues es facil, hay una propiedad de la matriz que te devuelve el indice de un objeto que buscas...y al tener ese indice podes hacer las comparaciones en la matriz de password, me explico, algo asi:

1 - creas las matrices

2 - buscas el nombre de usuario dentro de la primera matriz, si no existe ya le avisas y no haces mas nada, si existe entonces te devuelve el indice del item encontrado y ahi pasas al proximo paso

3 - con el indice anterior, ahora lo buscas en la matriz de password, al encontrarlo lo comparas con el password del usuario, si no es igual le avisas y salis, y si es correcto, ya terminaste.

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #3 (permalink)  
Antiguo 27/09/2009, 06:29
 
Fecha de Ingreso: septiembre-2009
Mensajes: 2
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayuda con login y matrices

Aun no lo consigo y el problema está en el bucle. Hace falta uno, no?
Código:
For i = 1 To 5 Step 1
            If Intento = 3 Then
                MsgBox("Error.")
            Else
                If BoxUsuario.Text = Matriz1(i) Then
                    j = i
                    If Boxontrasena.Text = Matriz2(j) Then
                        MsgBox("Exito.")
                    Else
                        MsgBox("Contraseña incorrecta.")
                        Intento = Intento + 1
                    End If
                Else
                    MsgBox("Usuario incorrecto.")
                    Intento = Intento + 1
                End If
            End If
Next
  #4 (permalink)  
Antiguo 27/09/2009, 22:15
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Ayuda con login y matrices

no hace falta ningun bucle, proba algo asi, lo arme asi nomas despues vos adaptalo a lo que quieras...

Código vb:
Ver original
  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         Dim vContador As Integer 'para el contador de logueos
  3.        Dim vIndiceUsuario As Integer ' para almacenar el indice del usuario si es encontrado
  4.        Dim vPassword As String = "" ' para almacenar el password buscandolo a travez del indice
  5.  
  6.         Dim Usuario() As String = {"jose", "pedro"}
  7.         Dim Password() As String = {"pass1", "pass2"}
  8.  
  9.         If Trim(txtusuario.Text) = "" Then MsgBox("debe ingresar un usuario") : Exit Sub
  10.         If Trim(txtpassword.Text) = "" Then MsgBox("debe ingresar un password") : Exit Sub
  11.  
  12.         If vContador = 3 Then
  13.             MsgBox("3 intentos")
  14.             Exit Sub
  15.         Else
  16.             vIndiceUsuario = Array.IndexOf(Usuario, Trim(txtusuario.Text)) 'Busca en el array de usuarios
  17.            'y devuelve el indice del mismo, si no encuentra devuelve -1
  18.  
  19.             If vIndiceUsuario <> -1 Then 'si encontro el usuario
  20.  
  21.                 vPassword = Password.GetValue(vIndiceUsuario)  'busca el password segun el indice
  22.  
  23.                 If vPassword = Trim(txtpassword.Text) Then ' si es igual al que ingresaste
  24.                    MsgBox("usuario y password correctos") 'login correcto
  25.                Else
  26.                     MsgBox("password incorrecto")
  27.                 End If
  28.             Else ' si no encontro el usuario
  29.                MsgBox("usuario incorrecto")
  30.             End If
  31.             vContador += 1
  32.         End If
  33.     End Sub

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #5 (permalink)  
Antiguo 28/09/2009, 10:43
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Respuesta: Ayuda con login y matrices

Muy lindo seba que quieras ayudarlo, pero no te olvides que este subforo no es .NET es VB CLASICO!!!
  #6 (permalink)  
Antiguo 28/09/2009, 19:25
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Ayuda con login y matrices

Cita:
Iniciado por culd Ver Mensaje
Muy lindo seba que quieras ayudarlo, pero no te olvides que este subforo no es .NET es VB CLASICO!!!
Ok, pero la duda es de VB 2008, y si tenes razon que algun moderador mueva el tema.

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #7 (permalink)  
Antiguo 29/09/2009, 09:10
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: Ayuda con login y matrices

Creo que algo así tendría que funcionar. No lo he probado.


Código :
Ver original
  1. For i = 1 To 5 Step 1
  2.             If Intento = 3 Then
  3.                 MsgBox("Error.")
  4.                 Exit For
  5.             Else
  6.                 If BoxUsuario.Text = Matriz1(i) Then
  7.                     If BoxContrasena.Text = Matriz2(i) Then
  8.                         MsgBox("Exito.")
  9.                         Intento = 0
  10.                         Exit For
  11.                     Else
  12.                         MsgBox("Contraseña incorrecta.")
  13.                         Intento = Intento + 1
  14.                         Exit For
  15.                     End If
  16.                 End If
  17.             End If
  18. Next i
  19. If i > 5 Then
  20.                     MsgBox("Usuario incorrecto.")
  21.                     Intento = Intento + 1
  22. End If

Como es tu código lo entenderás mejor y podrás repararlo si hay un fallo.

También te recomiendo usar UBound para saber el tamaño de la matriz, en lugar de usar números fijos como el 5.

Saludos

Última edición por pkj; 29/09/2009 a las 09:21
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




La zona horaria es GMT -6. Ahora son las 05:42.