border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

Cuenta Bancaria en EEUU
  #1 (permalink)  
Antiguo 10-11-2004, 13:22:10
Gran Participación en el Foro
 
Registrado: sep 2004
Posts: 119
Cblackx Valoración +2
Predeterminado Overflow

Tengo un problema con la declaracion de variables ssegun el tipo de dato que van a almacenar.
Código:
Private Sub Command1_Click()
Show
Dim A As Integer
Dim B As Integer
Dim C As Long
A = 20000
B = 20000
C = A + B
Print C
End Sub
me tira un OverFlow. El contenido de las variables A y B esta dentro del rango de un integer, y el resultado que se guarda en C no lo esta, por eso lo declare como un long. Sin embargo me dice que se produjo un OverFlow.
Responder Con Cita
  #2 (permalink)  
Antiguo 10-11-2004, 14:17:56
Avatar de Ronald_Leon_Madrid
Miembro SuperVIP del Foro
 
Registrado: mar 2004
Ubicación: Perú-Lima-Chorrillos
Posts: 1.073
Ronald_Leon_Madrid Valoración +2
Predeterminado

Hola:

que tal un gusto en saludarte, tu solucion a tu problema es de la sifuiente manera:

Private Sub Command1_Click()
Dim A As Integer
Dim B As Integer
Dim C As Long
A = 20000
B = 20000
C = CLng(A) + CLng(B)
Print C

End Sub

Espero que te sirva de ayuda.

Saludos cordiales,
__________________
Ronald León Madrid
Analista Programador de Sistemas
Aspi-Systems S.A.C
Responder Con Cita
  #3 (permalink)  
Antiguo 10-11-2004, 14:29:11
Gran Participación en el Foro
 
Registrado: sep 2004
Posts: 119
Cblackx Valoración +2
Predeterminado

la ayuda de VB dice que es "una función de conversión de tipos., o sea por lo que entendi convierte a la variable A y B a un tipo Long?
O sea, seria lo mismo que hacer?
Código:
Private Sub Command1_Click() 
Show 
Dim A As Long 
Dim B As Long
Dim C As Long 
A = 20000 
B = 20000 
C = A + B 
Print C 
End Sub
Responder Con Cita
  #4 (permalink)  
Antiguo 10-11-2004, 17:26:18
Avatar de acalanto
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.307
acalanto ha deshabilitado la reputación
Predeterminado

Eectivamente y aunque pueda parecer una contradición, VB transforma al máximo tipo posible -en este caso Long-. Hay que tener mucho cuidado con estas operaciones y la solución que te dá Ronald es válida para evitar errores de Casting en VB y obligatoria en otros lenguajes y plataformas.


Para que lo comprendas bien, uno no puede calzarse un calzado del 36 cuando gasta un 45.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #5 (permalink)  
Antiguo 10-11-2004, 18:19:46
Gran Participación en el Foro
 
Registrado: sep 2004
Posts: 119
Cblackx Valoración +2
Predeterminado

pero por que hace la conversión a Long?, si perfectamente el valor de las variables se adapta al tipo de dato declarado?
Responder Con Cita
  #6 (permalink)  
Antiguo 10-11-2004, 18:57:31
Avatar de acalanto
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.307
acalanto ha deshabilitado la reputación
Predeterminado

Pues tienes toda la razón, es incomprensible y mucho más si se tiene en cuenta que Visual Basic en cuestiones de TypeCast soporta casi todo, pero mira por que casual, de vez en cuando juega malas pasadas y ésta parece ser una de ellas.

Yo sinceramente tampoco entiendo muy bien el porqué al hacer la operación de dos números de una capacidad inferior hacía otra de superior, intenta transformar todo a este ´ltimo y ,como es de esperar, no le cabe el dato.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #7 (permalink)  
Antiguo 11-11-2004, 07:48:42
Moderador
 
Registrado: dic 2002
Ubicación: Oviedo - Asturias
Posts: 1.260
angelescj Valoración +2
Predeterminado

Voy a poner mi granito de arena. Primero realiza la parte de la derecha de la asignación, y en ella sólo participan Integer, así que ==> Resultado Integer. Una vez realizada la operación aritmética asigna y es cuando se da cuenta que tiene que convertir, pero ahí ya no llega por el error.
__________________
Angeles
-------------------------------------
Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
Vscroll overflow desbordamiento error 6 dagoba77 Visual Basic 6.00 4 02-03-2008 09:43:01
SQL DATETIME OVERFLOW osky2007 Visual Basic.NET 2003 & 2005 0 22-10-2007 22:00:22
Evitar el OverFlow lordgblue Visual Basic 6.00 1 17-09-2004 01:00:00


La franja horaria es GMT. Ahora son las 02:01:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right