Visual Basic - A ver quié sabe esta que me está volviendo loco

Life is soft - evento anual de software empresarial
 
Vista:

A ver quié sabe esta que me está volviendo loco

Publicado por Matías (6 intervenciones) el 15/03/2005 06:12:04
Tengo un error de desbordamiento en una función que me está volviendo loco. Estoy haciendo algo tan simple como sumarle 1 a un contador ("su" en integer). Pero me marca error de desbordamiento y no se por qué. Me marca que el error está en "su=su+1". cuando me fijo que valor tiene la variable "su" dice: 32767 y no se por qué ya que la variable está inicializada en 1.
Aquí está el código de la función. Si alguien me puede ayudar estaría buenísimo.
--------------------------------------------------------------------------------
Public Function yata(caranum As Integer) As Integer
Dim su As Integer
su = 1
While Str(caranum) <> Mid(yat, su, su) Or su <> Len(yat)
su = su + 1
Wend
If Str(caranum) = Mid(yat, su, su) Then
yata = 1
Else
yata = 0
End If
End Function
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

RE:A ver quié sabe esta que me está volviendo loco

Publicado por Juanjo (1 intervención) el 15/03/2005 06:47:49
Evidentemente. Declara la variable su como Long.
Saludos
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:A ver quié sabe esta que me está volviendo loco

Publicado por Matías (6 intervenciones) el 15/03/2005 19:25:47
me sigue pasando
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:A ver quié sabe esta que me está volviendo loco

Publicado por Christian (675 intervenciones) el 15/03/2005 22:03:38
Intenta con double
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:A ver quié sabe esta que me está volviendo loco

Publicado por Benjo (679 intervenciones) el 15/03/2005 22:58:47
Por más que intentes lo que intentes, ese Do provoca una iteración infinita y por supuesto, te ocasiona un desbordamiento de la Pila cuando no un overflow general del sistema.
Debés rever las condiciones del bucle porque no se cumplen y constantemente sigue sumando uno a la variable.
Es como un
Do while True
a= a+a
Loop

Siempre va a ser vedadero y por lo tanto nunca va a salir del bucle.
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