Aquí va una explicacion de como trabaja VB6, solo lo voy a abreviar, lo voy a extender en la wiki alrato.
ANTES QUE ANDA la evaluación en VB6 trabaja de IZQUIERDA a Derecha...El overflow ("Error 6 en tiempo de ejecución") del siguiente codigo:
Private Sub Form_Load()
Dim aa As Byte, bb As Byte, r As Integer
aa = 2
bb = 58
r = aa - bb
End Sub
Dicho error, se debe a que se
crea una variable temporal del mismo tipo del 1er elemento de la expresion matematica en este caso es byte, trabaja similar a C con respecto al casting de tipos, esto tiene un nombre que me parece tenia algo que ver con conversion forzada, este proceso tiene un nombre, pero no recuerdo cual era xP.
Una de las muchas Soluciones, seria la siguiente:
Private Sub Form_Load()
Dim aa As Byte, bb As Byte, r As Integer
aa = 2
bb = 58
r = (0% + aa) - bb
End Sub
Donde se empesaria a trabajar de la siguiente manera:
(sabiendo como evaluacia vb6 las expresiones)
OJO: En el Paso 1 se hace una prevension al OverFlow, Los parentesis son solo de forma preventiva y/o entendible1ero: * Se suma (0% + aa) ---> [/b] Se hace un casting ( Conversion al tipo de datos ).
2do:
* Se evalua el resultado del anterior (1er Paso) con la siguiente expresion es decir - bb y se almacena finalmente el resultado
En forma entendieble trabaria haci:
vartmp1 = (0% + aa) ' // Aqui se hace la prevencion del OverFlow es decir se convierte a Integer (0%)
vartmp2 = vartmp1 - bb
r = vartmp2
P.D.: Para saber que significa "
%" en el
0 (
0% ) lee lo que he escrito en la wiki.
4 - [Nociones básicas] * Es decir que si fuera la variable
r de tipo
Long hubera usado
% en lugar de
%, (Aun que no afecta mucho que digamos...).
NOTA: De forma predeterminada se pone el
0 del tipo
% (
Integer;
Por lo cuel el IDE de vb6 lo elimina, caso omiso ante los demás tipos de variables que no hace lo mismo ), solo lo he agregado aquí para la redaccion logica del mismo.
Sangriento Infierno Lunar!¡.