[Duda] No entiendo el Val y Str

Iniciado por Dreamaker, 13 Abril 2010, 04:12 AM

0 Miembros y 2 Visitantes están viendo este tema.

Dreamaker

Hola chicos, bueno vengo a postear esta duda porque hoy en la clase del colegio de laboratorio en VB 6 hicimos una calculadora que constaba de 2 textboxes donde se ingresaban 2 números, un botón llamado sumar donde se insertaba el código, y un label donde se mostraba el resultado final de la operación, les dejo el código:

Código (vb) [Seleccionar]
Private Sub cmdBoton1_Click()
Dim sngX As Single, sngY As Single, sngResult As Single
'Carga de datos

sngX = Val(txtValor1.Text)  'El textbox Nº1 donde se ingresa el primer numero se llama txtValor1
sngY = Val(txtValor2.Text)  'El textbox Nº2 donde se ingresa el primer numero se llama txtValor2
'Calculo de la suma

sngResult = sngX / sngY
lblSalida.Caption = Str(sngResult)
End Sub


Mi prof dijo que no era lo mismo poner sngX = Val (txtValor1.Text) que poner sngX = txtValor1.Text ya que en el 2do caso estaría guardando en la variable el cartel del contenido del textbox (el número) pero no como número sino como un string, y se le pone el val para que lo convierta en número

Después en lblSalida.Caption lo mismo, pone lblSalida.Caption = Str (sngResult) en vez de lblSalida.Caption = sngResult que dice que aunque llegue a funcionar no está bien, porque el resultado lo tiene que convertir a caracteres osea de tipo string

La verdad no le entendí nada por qué usa el Val y el Str ya que yo pensaba que era lo mismo sin ponerlos, les pido por favor si me pudieran explicar el por qué y la diferencia

Muchisimas gracias ;)

Shell Root

Supongamos que alguien realice estó:
Código (vb) [Seleccionar]
Text1.Text = a + 1
Obviamente daria error, pero que pasa si realiza estó
Código (vb) [Seleccionar]
Text1.Text = VAL(a)  + VAL(1)
Inmediatamente la función Val() deja de leer la cadena en el primer carácter que no puede reconocer como parte de un número. Así que por esté lado, seria como parte de algun mmm digamos verificación de datos.




Ahora que pasa con la función str(), seria al contrario, supongamos que estamos dando un parametro para un StoreProcedure, donde el parametro es obligatoriamente un String (Varchar), que pasa si por cosas de la vida, le ingresas un numero?, Daria error, por el tipo de dato.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

GhostLT

La función Val convierte una cadena en un número
Ejemplo:

cadena = "123456"
cadena = Val(cadena)

La función Str un número en una cadena.
Ejemplo:

'Ahora cadena vale 123456

cadena2 = 123456
cadena2 = Str(cadena2)

'Ahora cadena2 vale "123456"
There is some fiction in you truth, and some truth in you fiction

BlackZeroX

Text1.Text = a + 1

eso no da error eso da como resultado 1 y si a fuese asi un string que contiene algo solo lo concatena con el 1 al final.

Text1.Text = VAL(a)  + VAL(1)

No tiene caso poner val(1) 1 se etiende como numero siempre y cuando no este entre comillas o en una vairable tipo string variant o similar

Ducles Lunas!¡.
The Dark Shadow is my passion.

Dreamaker

mmm todavía no lo termino de entender :-\ alguien tendrá con algún ejemplo para entenderlo mejor?

Muchas gracias! ;D

Novlucker

#5
Mi dios! Si entiendes que hay diferentes tipos de variables? :huh:

Piensa que no puedes sumar una letra y un número, y para eso tienes que convertirlos, así como también tienes que convertir las variables para poder utilizarlas en determinados lugares, ya que si tienes un lugar (el caption por ejemplo) que acepta letras y tu le quieres meter un número es lógico que se "parta".

Ahora queda claro verdad?

Saludos


Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Dreamaker

#6
Cita de: Novlucker en 13 Abril 2010, 16:53 PM
Mi dios! Si entiendes que hay diferentes tipos de variables? :huh:

Piensa que no puedes sumar una letra y un número, y para eso tienes que convertirlos, así como también tienes que convertir las variables para poder utilizarlas en determinados lugares, ya que si tienes un lugar (el caption por ejemplo) que acepta letras y tu le quieres meter un número es lógico que se "parta".

Ahora queda claro verdad?

Saludos




Tranquilo nov :xD

Si mal no entendí es para que si se pone "5" no lo tome como un string o cadena de caracteres si no como un número, ahora si el usuario ingresa una letra, ¿En qué lo transforma? Si no lo puede transformar en número...

Suponiendo que en las casillas donde hay que ingresar números, coloca X y en la otra Y y los tiene que sumar, si no estuviera el val los concatenaría como XY verdad??

Y si está el Val que haría al ingresar esas 2 letras?

Probé con este código y funciona igual :huh:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
Dim sngX As Single, sngY As Single, sngresult As Single
sngX = Text1.Text
sngY = Text2.Text
sngresult = sngX + sngY
Label1.Caption = sngresult
End Sub


Novlucker

Eso mismo.

Ahora, eso que preguntas te lo puedes responder tu mismo, solo tienes que probar, y si, las letras sin el val se concatenan, y las letras que no pueden ser evaluadas como números valen cero.

X = "5"
Y = "a"

X + Y = 5a
val(X) + val(Y) = 5 + 0 = 5

Saludos

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Dreamaker

Cita de: Novlucker en 13 Abril 2010, 17:14 PM
Eso mismo.

Ahora, eso que preguntas te lo puedes responder tu mismo, solo tienes que probar, y si, las letras sin el val se concatenan, y las letras que no pueden ser evaluadas como números valen cero.

X = "5"
Y = "a"

X + Y = 5a
val(X) + val(Y) = 5 + 0 = 5

Saludos



Excelente! Ahora ya lo entendí!!

Y con el Str ()? :)

Shell Root

Ahora sí, lo que te decia con la manupulacion de datos, que pasan a la base de datos, tenes un campo que sea Varchar, es decir, String. Y quieres ingresar un numero en ese campo, pero que pasa si ingresar esté numero 1, al momento de ejecutar la Query, no te dejará (Eso creo), yá que el campo es Integer. Para lograr insertar ese campo en la base de datos, deberas convertir ese numero en String, asñi que usas la función Str().

Creo que eso seria un ejemplo de como usar esa función.

Saludos!
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.