Problema visual basic 2010

Iniciado por Problema visual basic, 2 Julio 2012, 17:02 PM

0 Miembros y 1 Visitante están viendo este tema.

Problema visual basic

Hola, tengo un grave problema estoy haciendo un programa de carpetas con contraseña, (la contraseña sirve para todas las carpetas) y para guardar la contraseña cree en las propiedades del programa 2 settings uno llamado pass que contiene la contraseña y otra llamada pass2 Al hacer click en un boton pasa esto :  My.Settings.Pass = Textbox1.Text y My. Settings.Pass2 = 2. El programa bloquea con enable todas sus funciones, Button1.Enabled = False y solo dega cerrarse. Hasta aqui todo bien tengo el programa en el form1.Load tengo If My.Settings.Pass2 = 2 form2.show y despues Me.hide. El problema viene en que no se muestra form2, en cambio si pongo por defecto que pass2 = 2 en la pestaña settings, si que se muestra form2 (Form2 tiene 1 texbox y 1 boton al darle al boton pasa esto: If Textbox1.Text = My.Settings.Pass form1.show y despues me.hide. El problema es muy simple como puedo solucionar este error?

PD: Todos los codigos estan escritos a mano y pueden contener errores pero visual basic me los corrigue y compila y ejecuta sin problemas.

PD2: Tengo la version 2010 otra cosa he echo lo mismo para otro programa y me funciona perfectamente

Keyen Night

Podrías colocar el código completo y usando las etiquetas?
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

Problema visual basic

#2
Hay 4 forms mucho codigo entre otras cosas descargalo de aquí: (Quito el link sihace falta lo vuelvo a poner) (Es mediafire pero sin acceder a la pagina) Como veo que la gente que pone links de descarga con pocos post no os fiáis mucho virus total: https://www.virustotal.com/file/597e50898d54025c451f59277cbcd2c0d762db4384c226d01a278fd06d53bb4f/analysis/1341257978/

Keyen Night

Primero varias recomendaciones :D espero que no lo tomes a mal

Es Comprobar con 'b'
Selecciona con doble 'c'

Esto, lo puedes colocar en una sola línea
Código (vb.net) [Seleccionar]

                hide_file_info.Attributes = hide_file_info.Attributes Or IO.FileAttributes.Hidden
                hide_file_info.Attributes = hide_file_info.Attributes Or IO.FileAttributes.System
                hide_file_info.Attributes = hide_file_info.Attributes Or IO.FileAttributes.Encrypted
                hide_file_info.Attributes = hide_file_info.Attributes Or IO.FileAttributes.ReadOnly


Al asignar Encrypted, el archivo solo podrá ser abierto por el usuario que aplico la propiedad.

En vez de nombrar cada

Código (vb.net) [Seleccionar]
Control.Enabled = False

Puedes hacer

Código (vb.net) [Seleccionar]

For Each X As Control In Contenedor.Controls
     X.Enabled = False
Next


No hace falta decir

Código (vb.net) [Seleccionar]
If Condicion = True Then

End If


Puedes:

Código (vb.net) [Seleccionar]
If Condicion Then

End If


En los Textbox activa la propiedad UseSystemPasswordChar para que se muestren los clásicos asteriscos.

Ahora tu problema, en el Form2 al presionar Comprobar, dices Form1.Show cuando ya Form1 esta visible solo está en espera del resultado de Form2, osea debes hacer solamente Me.Close, además dices que en el Form2 cuando se lance el evento FormClosing dices End así que de cualquier forma, se cerrara el programa falles o aciertes la contraseña, yo colocaría Me.Close al presionar comprobar y en FormClosing comprobaría la contraseña si es incorrecta cancelo el cierre y si es correcta no hago nada pues se cerrara el Form2 y dará paso normalmente al Form1 .

Con respecto a guardar la contraseña en My.Settings, es demasiado débil, cualquier persona podría sacar la contraseña en 2 segundos. Si este programa es solo con fines de aprendizaje o de práctica entonces se puede obviar esta debilidad.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

Problema visual basic

CitarEn los Textbox activa la propiedad UseSystemPasswordChar para que se muestren los clásicos asteriscos.
Eso lo hice pero quizás no a todos

CitarAhora tu problema, en el Form2 al presionar Comprobar, dices Form1.Show cuando ya Form1 esta visible solo está en espera del resultado de Form2
Incorrecto form 1 esta cerrado mira el code, si te fijas bien hay 2 formas de comprobar la contraseña (cabe reconocer que el programa no estaba terminado aun) 1 es mediante la pestaña comprobar si todavía no has cerrado el programa si lo cierras (mira el code) y lo que tu dices no es correcto en el Form 1 no esta visible en el form 1 esta cerrado y por cierto lo intente con Showdialog que me parecia interesante marcando pass2 = "2" por defecto pero form1 no se queda esperando se cierra.
If My.Settings.Pass2= "2"
Form2.Show
Me.Close

Lo siento pero tu comentario (las sugerencias si) no me sirve de nada, de que me sirve saber que form2 tiene end si form2 no se muesta¿? Como te digo My.Settings no se guarda ese es mi problema. no os pido sugerencias que si me las dais muchas gracias apenas estoy empezando en visual basic .net como lo llamaias aquí y las sugerencias las aplicare con mucho gusto pero mi problema es que no se guardan los settings.

Citarosea debes hacer solamente Me.Close, además dices que en el Form2 cuando se lance el evento FormClosing dices End así que de cualquier forma, se cerrara el programa falles o aciertes la contraseña, yo colocaría Me.Close al presionar comprobar y en FormClosing comprobaría la contraseña si es incorrecta cancelo el cierre y si es correcta no hago nada pues se cerrara el Form2 y dará paso normalmente al Form1
Eso esta muy bien pero eso esta mal, si yo cierro el formulario 2 porque no me se la contraseña no podre salir me la comprobara y como es incorrecta no podre salir. Aparte de que quizas tengas razon no me percate de ese error pero si no se me abre el formulario 2 como quieres que encuentre errores?

CitarCon respecto a guardar la contraseña en My.Settings, es demasiado débil, cualquier persona podría sacar la contraseña en 2 segundos. Si este programa es solo con fines de aprendizaje o de práctica entonces se puede obviar esta debilidad.
Intente en su momento guardarlas en registro pero eso es difícil no encuentro los malditos codigos para guardar y leer el registro. Y lo de los fines de aprendizaje ... digamos que si pero no soy el único que sabe de programación en un grupo y me van pidiendo retos y cosas uno fue este no es aprendizaje porque se lo daré a unos amigos pero tampoco se lo venderé.

Keyen Night

#5
Te recuerdo que yo no tengo la responsabilidad ni obligación de responderte, simplemente quiero que puedas resolver tu problema. No voy a pelear por si está mal o bien mi respuesta, simplemente te voy a dejar el proyecto corregido con todo lo de arriba y tu lo podrás ver si funciona o no, y es primera vez que haré esto por el solo hecho de que veas que funciona.

Los errores son los siguientes:

El Form1 llama al Form2 con ShowDialog, el Form1 solo espera por el resultado de Form2 para ser visible no puedes llamar Form1.Show desde Form2, en otras palabras tu no puedes ser padre de tu abuelo.

Nunca guardas My.Settings, antes de cerrar.

No es necesario una variable de tipo entero en la configuración si le vas a dar el valor 1 y 0 cuando existe Boolean.

Un error que no corregí pues debes arreglar gran parte del programa es el siguiente: Si hay contraseña, un Form la solicita; luego cuando estas en Form1 es como si no tuvieses contraseña asignada.

Algunas Recomendaciones: No es necesaria la configuración Pass2, simplemente debes verificar que Pass sea nulo para saber que no hay contraseñas asignadas.

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

Problema visual basic

#6
Muchas gracias pero no era mi deseo que lo resolvieras

CitarNunca guardas My.Settings, antes de cerrar.
WTF? Te refieres a que no se pueden guardar los settings o que yo no los guardo? Me refiero a que en otro proyecto se me guardaban sin hacer nada .

Citar
No es necesario una variable de tipo entero en la configuración si le vas a dar el valor 1 y 0 cuando existe Boolean.

Un error que no corregí pues debes arreglar gran parte del programa es el siguiente: Si hay contraseña, un Form la solicita; luego cuando estas en Form1 es como si no tuvieses contraseña asignada.

Algunas Recomendaciones: No es necesaria la configuración Pass2, simplemente debes verificar que Pass sea nulo para saber que no hay contraseñas asignadas.
No se lo que es Boolean lo voy a buscar!

Eso no es exactamente un error y todavía debo adaptarlo del todo a la pestaña comprovar, la idea es que al aparecer (encender) si hay contraseña te la pida pero que te la vuelva a preguntar cuando vuelvas a encender (como un pin de movil) pero que una vez dentro volviendo a poner la contraseña desabilitar que te pregunte cada vez.

La recomendación la tendre en cuenta.

Muchisimas gracias si me pudieras decir porque no se me guardaban los settings me harias un gran favor

Perdon por las faltas ortograficas que seguro que tendre

Como buen alumno hay que degar el proyecto terminado al professor: http://205.196.123.185/9hv863nn0sxg/f5c524h55kqpkcs/Carpeta+con+contrase%C3%B1a.7z