elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Crear 5 form y que aparezcan en forma aleatoria. con vb 2012
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Crear 5 form y que aparezcan en forma aleatoria. con vb 2012  (Leído 3,908 veces)
NEBIRE


Desconectado Desconectado

Mensajes: 2.339


Ver Perfil
Re: Crear 5 form y que aparezcan en forma aleatoria. con vb 2012
« Respuesta #10 en: 30 Marzo 2017, 20:24 »

Bien... ya estoy de vuelta.
He corregido un par de sencillos bugs... ahora funciona correctamente.

Recuerda que el inputbox, limita mucho el ancho para preguntas y respuestas largas, lo mejor es que lo remplaces por un formulario y tener un método similar (al inputbox), donde envías los mismos parámetros que el inputbox, que muestre la ventana y recoja el resultado del usuario de vuelta... Vamos emular al inputbox... eso queda a tu esfuerzo.


En línea

Edierb

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Crear 5 form y que aparezcan en forma aleatoria. con vb 2012
« Respuesta #11 en: 30 Marzo 2017, 22:39 »

ufff esta larrrgo jeje bueno ya lo probé y parce que va bien, solo que tengo inconveniente con el archivo .txt, ya lo cree pero lo tengo en blanco por que no se que formato lleva, me imagino que hay es donde van alojadas las preguntas..
manda algunos errores pero debe ser por que el archivo.text esta en blanco.


En línea

NEBIRE


Desconectado Desconectado

Mensajes: 2.339


Ver Perfil
Re: Crear 5 form y que aparezcan en forma aleatoria. con vb 2012
« Respuesta #12 en: 30 Marzo 2017, 23:03 »

Te decía al final:
Citar

'  NumPreguntas: ' tiene el número de preguntas que aloja el fichero, en el ejemplo
(por cada pregunta que indique numpreguntas debe haber esta estructura)
'  Pregunta X el texto de la pregunta, por ejemplo: Test 01: De qué color es la hierba?
'    Respuesta A  el texto de una posible respuesta, por ejemplo: 0 - Azul
'    Respuesta B   por ejemplo 1 - Blanco
'    Respuesta C  por ejemplo 2 - verde
'    Respuesta D  por ejemplo 3 - Gris
'    Solución 0-3 un valor numérico entre 0 y 3 , por ejemplo 2

Un ejemplo para copiar y pegar en un fichero de texto:
Citar
6
01. ¿Cuál, de entre los siguientes, es requisito para la recuperación de la nacionalidad española?
0 - Ser residente legal en España durante los tres años anteriores a la petición.
1 - Renunciar a la anterior nacionalidad.
2 - Tener al menos más de una nacionalidad en la U.E.
3 - Inscribir la recuperación en el Registro Civil.
3
02. ¿Qué tipo de leyes no pueden ser aprobadas en Comisión?
0 - Todas las leyes pueden aprobarse en Comisión.
1 - La reforma Constitucional, las cuestiones internacionales, las leyes Orgánicas y de bases y los Presupuestos Generales del Estado.
2 - Todas las leyes pueden aprobarse en comisión, excepto las orgánicas que necesita mayoría absoluta del Pleno.
3 - Solo las leyes orgánicas.
1
03. Señale la respuesta correcta respecto a la vecindad civil:
0 - El matrimonio no altera la vecindad Civil.
1 - La vecindad civil se adquiere por residencia continuada durante un año, siempre que el interesado manifieste ser esa su voluntad.
2 - La vecindad civil se adquiere por residencia continuada de siete años, sin declaración en contrario en este plazo.
3 - Ninguna respuesta es cierta.
0
04. El domicilio de los diplomáticos residentes en el extranjero por razón de su cargo, que gocen del derecho de extraterritorialidad, será el último que hubieren tenido en territorio español; ¿qué nombre recibe este domicilio?
0 - Real o voluntario.
1 - Legal o necesario.
2 - Electivo o especial.
3 - Domicilio diplomaturado.
0
05. Siendo la capacidad de obrar o de ejercicio, la posibilidad que tiene una persona de actuar jurídicamente por sí mismo, señale, entre las siguientes, la que considere limitación de dicha capacidad:
0 - La incapacitación.
1 - La prodigalidad.
2 - Ambas respuestas son ciertas.
3 - Ninguna respuesta es cierta.
2
06. ¿Cuándo se concede la nacionalidad española por carta de naturaleza?
0 - Te la dan cuando demuestras tener una permanecnia en el país superior a 2 años.
1 - Pertenece concederla al Rey en base a su derecho constitucional de gracia.
2 - Tiene que dar su consentimiento el ministerio del Interior.
3 - Cuando en el interesado concurren circunstancias excepcionales.
3

...y el fichero debe estar situado en la misma carpeta donde está el ejecutable, la carpeta varía en función de si estás en modo debug o compilado...

En debug, la ruta sería más o menos esta:
... \WindowsApplication1\bin\Debug\Cuestionario.txt
ó si está compilado:
... \WindowsApplication1\bin\Release\Cuestionario.txt

la ruta y el nombre del fichero, se pueden cambiar en la línea:
Citar
Fios = New IO.StreamReader(Application.ExecutablePath & "\Cuestionario.txt")
que aparece dos veces, una en el método de evento:
Test_IntroducirNuevoCuestionario
y otra en método de carga del formulario:
Form1_Load

El código sale largo, porque lleva comentarios, estructuras y demás... (pueden omitirse o remplazarse por alogo más sencillo)... además, puede ser optimizado, está sencillo y 'expandido para que te sea más asequible de entender...


En línea

Edierb

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Crear 5 form y que aparezcan en forma aleatoria. con vb 2012
« Respuesta #13 en: 30 Marzo 2017, 23:10 »

me sale un error acá
 Test.ComenzarTest(Convert.ToByte(Fios.ReadLine))
me sale este mensage
"La cadena de entrada no tiene el formato correcto."
En línea

NEBIRE


Desconectado Desconectado

Mensajes: 2.339


Ver Perfil
Re: Crear 5 form y que aparezcan en forma aleatoria. con vb 2012
« Respuesta #14 en: 31 Marzo 2017, 00:15 »

lo primero en el fichero debe ser una línea donde haya un valor numérico entre 1 y 255
Ese valor indica cuántas preguntas hay en es efichero, en mi ejemplo he puesto 6 preguntas, por eso en la primera línea aparece un 6.

Al leer esa línea (al comienzo del fichero), lo convierte a byte, si hay un texto largo, evidentemente no podrá convertirlo a byte

6 hola que tal <--- no puede ser convertido a byte un texto así.

¿Puedes volcar el texto que has puesto en tu fichero???. eso ayudaría ver más claro donde está el error.
En línea

Edierb

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Crear 5 form y que aparezcan en forma aleatoria. con vb 2012
« Respuesta #15 en: 31 Marzo 2017, 00:54 »

ya corregí el error te pregunto algo en ves de que las respuestas sean seleccionadas 1 2 0 3, puedo poner A, B, C?
y me gustaría saber como es eso de cambiar el imputbox por el formulario, no se la verdad, es muy básico el conocimiento que tengo de este lenguaje.


En línea

NEBIRE


Desconectado Desconectado

Mensajes: 2.339


Ver Perfil
Re: Crear 5 form y que aparezcan en forma aleatoria. con vb 2012
« Respuesta #16 en: 31 Marzo 2017, 17:00 »

El texto de las preguntas pon lo que te dé la gana...
Las líneas que son excepción son las líneas donde se espera un número (solo número), las cuales son las líneas de 'solución' y la primera que contiene el número de preguntas.
El ejemplo previo, modificado (donde se puede):
Citar
6
Pregunta 1. ¿Cuál, de entre los siguientes, es requisito para la recuperación de la nacionalidad española?
A - Ser residente legal en España durante los tres años anteriores a la petición.
B - Renunciar a la anterior nacionalidad.
C - Tener al menos más de una nacionalidad en la U.E.
D - Inscribir la recuperación en el Registro Civil.
3
Pregunta 2. ¿Qué tipo de leyes no pueden ser aprobadas en Comisión?
A - Todas las leyes pueden aprobarse en Comisión.
B - La reforma Constitucional, las cuestiones internacionales, las leyes Orgánicas y de bases y los Presupuestos Generales del Estado.
C - Todas las leyes pueden aprobarse en comisión, excepto las orgánicas que necesita mayoría absoluta del Pleno.
D - Solo las leyes orgánicas.
1
Pregunta 3. Señale la respuesta correcta respecto a la vecindad civil:
A - El matrimonio no altera la vecindad Civil.
B - La vecindad civil se adquiere por residencia continuada durante un año, siempre que el interesado manifieste ser esa su voluntad.
C - La vecindad civil se adquiere por residencia continuada de siete años, sin declaración en contrario en este plazo.
D - Ninguna respuesta es cierta.
0
Pregunta 4. El domicilio de los diplomáticos residentes en el extranjero por razón de su cargo, que gocen del derecho de extraterritorialidad, será el último que hubieren tenido en territorio español; ¿qué nombre recibe este domicilio?
A - Real o voluntario.
B - Legal o necesario.
C - Electivo o especial.
D - Domicilio diplomaturado.
0
Pregunta 5. Siendo la capacidad de obrar o de ejercicio, la posibilidad que tiene una persona de actuar jurídicamente por sí mismo, señale, entre las siguientes, la que considere limitación de dicha capacidad:
A - La incapacitación.
B - La prodigalidad.
C - Ambas respuestas son ciertas.
D - Ninguna respuesta es cierta.
2
Pregunta 6. ¿Cuándo se concede la nacionalidad española por carta de naturaleza?
A - Te la dan cuando demuestras tener una permanecnia en el país superior a 2 años.
B - Pertenece concederla al Rey en base a su derecho constitucional de gracia.
C - Tiene que dar su consentimiento el ministerio del Interior.
D - Cuando en el interesado concurren circunstancias excepcionales.
3


Al respecto date cuenta que hemos limitado a byte el valor númerico, porque no va ser cierto que una pregunta ofrezca más de 256 respuestas entre las que elegir, ni tampoco va a ser un cuestionario cómodo que tenga más de 255 preguntas... pero si necesitas ampliar ese valor... en vez de byte, defínelo como short (int16), que ofrece hasta 65536 preguntas y 65546 opciones de respuesta por cada pregunta.

En el programa, mejor dicho en TODOS los programas, siempre que puedas (y si no puedes también), haz que funcione con números, siempre, siempre será infinitamente más rápido... el ordenador cuenta bien números, pero cuenta muy mal las letras A+B no es C, porque A=65 y B=66, luego para que fuere C, habría que convertirlo a números, sumarlo y luego el resultado convertirlo a letra otra vez...  66+65-64=67, Mejor si 1+2=3, esto es lo más efectivo.

Bueno, no pasa nada si se cambia el valor de las soluciones de la respuesta, después de todo está previsto al haber dispuesto una función de conversión en la propia estructura, así si quieres que el 'Alumno' en vez de responde 0, 2..1 responda A, C..B
donde pone esto:
Código
  1. Public Function Convertir(ByRef Texto As String) As RespuestasPosibles
  2.            Select Case Texto
  3.                Case "0" : Return RespuestasPosibles.RESPUESTA_A
  4.                Case "1" : Return RespuestasPosibles.RESPUESTA_B
  5.                Case "2" : Return RespuestasPosibles.RESPUESTA_C
  6.                Case "3" : Return RespuestasPosibles.RESPUESTA_D
  7.                Case Else : Return RespuestasPosibles.RESPUESTA_A
  8.            End Select
  9.        End Function
  10.  
Cámbialo por esto otro (observa la escasa diferencia, donde antes ponía 0,1,2,3 ahora ponemos A,B,C,D pero como el usuario podría poner a,b,c,d antes nos aseguramos que la comparación sea en mayuscula fíjate en la línea "Select Case Texto.Toupper", antes era solo "Select Case Texto"), peor sigue dejando el número de solución en el texto, también se puede cambiar, pero requiere retocar más cosas en el código... ya lo harás cuando aprendas lo suficiente:

Código
  1. Public Function Convertir(ByRef Texto As String) As RespuestasPosibles
  2.            Select Case Texto.Toupper
  3.                Case "A" : Return RespuestasPosibles.RESPUESTA_A
  4.                Case "B" : Return RespuestasPosibles.RESPUESTA_B
  5.                Case "C" : Return RespuestasPosibles.RESPUESTA_C
  6.                Case "D" : Return RespuestasPosibles.RESPUESTA_D
  7.                Case Else : Return RespuestasPosibles.RESPUESTA_A
  8.            End Select
  9.        End Function

Internamente en ambos casos sigue devolviendo un valor numérico, y externamente en ambos caso sigue recibiendo un texto...

Bien, como estás empezando, déjalo tal cual, no te preocupes sobre lo del inputbox y el formulario... solo señalarte que el inputbox, es un formulario que ofrece un ancho máximo y que por tanto si las preguntas son muy largas, como se han puesto en el título, no se verán enteras... entonces confórmate en tal caso con pasarlas al mismo sitio que las opciones de respuesta y deja una línea en blanco tras la pregunta...

..en fin trata de entender el código, que hace cada cosa y sobretodo, por qué lo hace... pulsando la tecla F11 te moverás paso a paso entre las instrucciones del código (examina el menú 'Depurar' y haz uso de sus ítems, aprendenrás mucho más rápido así), así vas viendo y entiendo como opera (en ese estado posando el ratón sobre el código, el 'intellisense', te da info adicional sobre los valores actuales que tiene un objeto o variable... también podría serte útil, activar desde el menú 'Depurar-->Ventanas-->variables locales', aunque ahí todas esas ventanas son muy útiles (aunque cada una en su momento), la que te he dicho facilita mucho ver el estado actual de cada objeto hasta sus últimos campos... mientras estás en ejecución paso a paso o parado en un punto de interrupción...

Si es preciso mira de buscar en youtube algún vídeo sobr eel manejo dle IDE de VB.
« Última modificación: 31 Marzo 2017, 22:07 por NEBIRE » En línea

Edierb

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Crear 5 form y que aparezcan en forma aleatoria. con vb 2012
« Respuesta #17 en: 31 Marzo 2017, 17:49 »

Hey muchas gracias te aseguro que me has enseñado mas que el profesor que me dicto claces, boy a implementar todo y ver que mas puedo hacer para ir mejorando el programa.
Saludos.
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines