Visual Basic - Pregunta sobre GoSub

Life is soft - evento anual de software empresarial
 
Vista:

Pregunta sobre GoSub

Publicado por SebasSBM (20 intervenciones) el 30/08/2007 15:22:34
He creado estos procedimientos:

Private Sub Command1_Click()
If Option1.Value = True Then Facil = True Else Facil = False
If Option2.Value = True Then Normal = True Else Normal = False
If Option3.Value = True Then Dificil = True Else Dificil = False ' Las variables fácil, normal y difícil están declaradas y no me dan problemas
Load Form2
GoSub Crear ' Me señala esta parte como etiqueta no definida
End Sub

Private Sub Crear()
GoSub Empezar
Form1.Visible = False
End Sub

[...]

Cuando pruebo el programa, me dice: "Error de compilación: Etiqueta no definida", refiriéndose a "GoSub Crear". ¿Por qué? Cómo puedo solucionarlo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Prueba esto

Publicado por Taliban (13 intervenciones) el 30/08/2007 15:52:37
El error sucede porque las etiquetas esas deben estar definidas dentro del mismo procedimiento o función en el que las llames con Goto o Gosub.
El Goto como el Gosub se utilizaban mucho en las versiones de Basic para MS-DOS, y aunque puedes seguir usándolos en VB está restringido a lo que ya te mencioné. Te aconsejo que utilices Gosub cuando tengas algunas lineas de código que las utilices más de una vez DENTRO DEL MISMO PROCEDIMIENTO/FUNCIÓN. Para lo que tú intentas hacer, según tu código, estás llamando a procedimientos, no a una etiqueta. Debería ser algo así como:

Private Sub Command1_Click()
If Option1.Value = True Then Facil = True Else Facil = False
If Option2.Value = True Then Normal = True Else Normal = False
If Option3.Value = True Then Dificil = True Else Dificil = False
Load Form2
Call Crear ' o tambien solamente Crear, sin la instruccion Call
' Pero no uses Gosub, porque no es etiqueta, sino un procedimiento.
End Sub

Private Sub Crear()
Call Empezar ' O Solamente Empezar
Form1.Visible = False
End Sub

Private Sub Empezar
...
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Prueba esto

Publicado por SebasSBM (20 intervenciones) el 30/08/2007 16:12:39
Maldición(no es por ti)! Ese es el método que utilizaba antes, pero probé con GoSub porque usando el método anterior se me saturaba la pila de llamadas. Utilizaba el "Call" porque no me cabían todas las instrucciones en el mismo procedimiento, y lo dividí en múltiples procedimientos (esas partes del programa no las he incluido, y son realmente largas). Miré la pila de llamadas y observé que el programa había hecho interminables llamadas a los dos últimos procedimientos. Creo que se debe a que llamaba al siguiente procedimiento antes de cerrar ese, aunque quizá me equivoque. ¿Se te ocurre algo para evitar eso?

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar