SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Visual Basic para principiantes => Mensaje iniciado por: BoRJiS182 en Viernes 17 de Noviembre de 2006, 17:27

Título: Paso De Grados Fahrenheit A Celsius
Publicado por: BoRJiS182 en Viernes 17 de Noviembre de 2006, 17:27
hola buenas.....tengo un problema y es que en un programilla que tengo que hacer puedo pasar de grados celsius a fahrenheit...pero no al reves,me salta una ventanita con el mensaje "error '28' en tiempo de ejecucion" creo que puede ser debido a los decimales ya que abajo de este mensaje viene otro de "espqacio de pila insuficiente"alguien sabe como hacer para que los decimales se redondeen??o si lo estoy haciendo mal directamente....estoy perdido!


Gracias!
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: RadicalEd en Viernes 17 de Noviembre de 2006, 17:52
Muestra tú código
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: F_Tanori en Viernes 17 de Noviembre de 2006, 18:46
Debes de estar ejecutando una (s) instrucciones 'infinitamente' como un ciclo o en algun evento que se queda 'trabado'


Para redondear puedes usar

Num=Fix(NumeroaRedondear)
Num=int(NumeroaRedondear)

Como dice el buen RadicalEd deberias poner el código


saludos
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: BoRJiS182 en Sábado 18 de Noviembre de 2006, 17:31
No se a que os referis con el codigo.... no se,es un simple programa de visual basic,en el que tengo dos cajas de texto (una en la que escribo Celsius y otra fahrenheit...y con eso se me tiene que mover un scroll...a ver...os pongo lo que llevo hecho.Lo de "lblColor",esta mal tambien,es que se supone que cuando el termometro marca 100 grados celsius debe aparecer un label en rojo,cuando esta al minimo debe ser azul....pasando por todos los colores...y tp se me ocurre como hacerlo...asi que si me podeis ayudar a corregirlo os estaría muyyy agradecido!!


Private Sub cmdSalir_Click()
    Beep
    End
End Sub

Private Sub lblColor_Click()
    lblColor = vsbTemp.Value
        If vsbTemp.Value = 0 Then
            lblColor = RGB(255, 255, 255)
        End If
        If vsbTemp.Value = 100 Then
            lblColor = RGB(255, 0, 0)
        End If
        If vsbTemp.Value = -100 Then
            lblColor = RGB(0, 0, 255)
    Color = RGB(rojo, verde, azul)
    Color = azul * 256 ^ 2 + verde * 256 + rojo
End Sub

Private Sub mnuArchivoSalir_Click()
    End
End Sub

Private Sub txtCent_Change()
    txtCent.Text = Val(txtCent.Text)
    txtFahr.Text = 32 + 1.8 * Val(txtCent.Text)
    vsbTemp.Value = Val(txtCent.Text)
End Sub

Private Sub txtFahr_Change()
    txtFahr.Text = Val(txtFahr.Text)
    txtCent.Text = (Val(txtFahr.Text) - 32) * 5 / 9
End Sub

Private Sub vsbTemp_Change()
    txtCent.Text = vsbTemp.Value
    txtFahr.Text = 32 + 1.8 * vsbTemp.Value
End Sub
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: F_Tanori en Sábado 18 de Noviembre de 2006, 21:28
A eso se le llama código... :rolleyes:



La propiedad para cambiarle el color es
BackColor (lblColor.BackColor)

y el codigo iria en el evento de la barra (vbsTemp_Change)
Ejemplo

Código: Text
  1.  
  2. Private Sub vsbTemp_Change()
  3. txtCent.Text = vsbTemp.Value
  4. txtFahr.Text = 32 + 1.8 * vsbTemp.Value
  5.  
  6. If vsbTemp.Value = 0 Then
  7. lblColor.BackColor = RGB(255, 255, 255)
  8. End If
  9. If vsbTemp.Value = 100 Then
  10. lblColor.BackColor = RGB(255, 0, 0)
  11. End If
  12. If vsbTemp.Value < 0 Then
  13. lblColor.BackColor = RGB(0, 0, 255)
  14. End If
  15.  

Limita los valores de la scroll con las propiedades Max,Min
Creo que debes de cambiar el evento _Change() porque no te permite escribir apenas metes una letra se va ejecutar el evento, me parece que no es el adecudado
pudieras usar, LostFocus u otro (como validar que se haya pulsado enter)

Espero haber ayudado... cualquier cosa  :comp:  comunicate  :hola:

Saludos
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: BoRJiS182 en Domingo 19 de Noviembre de 2006, 15:06
y para escribir lo de grados fahrenheit y que me los pase a grados centigrados?
Es que lo que tengo escrito funciona...pero hay veces que me da demasiados decimales y me sale el error ese que ya cité...





Muchisimas gracias por la ayuda y siento las molestias!!!!!!!!!!!
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: albertovicat en Domingo 19 de Noviembre de 2006, 15:27
Te sugiero usar "round", a la que le podés especificar cuantos decimales querés como segundo argumento, después de una coma:

print round(123.5576878,2)
 123.56

Fix e Int solo te devuelven la parte entera del número.
Saludos.  :hola:
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: BoRJiS182 en Domingo 19 de Noviembre de 2006, 20:34
muchas gracias!!eso como lo tendría que introducir en el codigo???en que parte y como?por que hay muchos casos de decimales...entonces no se como utilizarlo.


Muchas gracias!
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: albertovicat en Domingo 19 de Noviembre de 2006, 23:52
Bueno... pues, honestamente no he mirado a fondo tu código, pero veamos esta parte:

Private Sub txtCent_Change()
txtCent.Text = Val(txtCent.Text)
txtFahr.Text = 32 + 1.8 * Val(txtCent.Text)
vsbTemp.Value = Val(txtCent.Text)
End Sub

... sería:

Private Sub txtCent_Change()
txtCent.Text = Val(txtCent.Text)
txtFahr.Text = Round(32 + 1.8 * Val(txtCent.Text),2)
vsbTemp.Value = Val(txtCent.Text)
End Sub

... si es que con 2 decimales te es suficiente, sino le pones la cantidad que te haga falta.
Suerte.  :hola:
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: Mollense en Lunes 20 de Noviembre de 2006, 04:29
No he probado los códigos que han puesto pero me parece que cuando el usuario ingresa un valor en un campo, por ejemplo txtCent, por lógica se ejecuta el evento txtCent_Change(), esto va a cambiar el valor de txtFahr, lo que desencadenará el evento txtFahr_Change() y al estar redondeado el valor de txtFahr la conversión a celsius no va a dar el mismo valor que ingresó el usuario por lo que txtCent cambia su valor y vuelve el evento txtCent_Change(), luego txtFahr_Change() y sigue hasta desbordar la pila.

Mi consejo es que utilices un botón para cada conversión en vez de usar los eventos de los campos.
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: F_Tanori en Lunes 20 de Noviembre de 2006, 05:46
Cita de: "Angel_K_ido"
No he probado los códigos que han puesto pero me parece que cuando el usuario ingresa un valor en un campo, por ejemplo txtCent, por lógica se ejecuta el evento txtCent_Change(), esto va a cambiar el valor de txtFahr, lo que desencadenará el evento txtFahr_Change() y al estar redondeado el valor de txtFahr la conversión a celsius no va a dar el mismo valor que ingresó el usuario por lo que txtCent cambia su valor y vuelve el evento txtCent_Change(), luego txtFahr_Change() y sigue hasta desbordar la pila.

Mi consejo es que utilices un botón para cada conversión en vez de usar los eventos de los campos.


Asi es tabien creo que es el evento equivocado, talvez un radiobutton  :whistling:

Cita de: "albertovicat"
Te sugiero usar "round", a la que le podés especificar cuantos decimales querés como segundo argumento, después de una coma:

print round(123.5576878,2)
123.56

Fix e Int solo te devuelven la parte entera del número.
Saludos. :hola:


No me acordaba de esa funcion en visual :P  :beer:
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: BoRJiS182 en Lunes 20 de Noviembre de 2006, 20:02
muchas gracias por todo...pero sigue saliendome el error ese y no puedo utilizar ningun tipo de boton...asi que ya veré como hacerlo!!gracias y lo siento por las molestias!
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: BoRJiS182 en Lunes 20 de Noviembre de 2006, 20:45
Me ha ocurrido un incidente...tengo que hacer que los colores vayan gradualmente aparte de que en 100 sea rojo....cuando va bajando la cuenta tiene que ir clareandose hasta ser en 0 blanco y en los numeros negativos....ir llendo de blanco a azul....metí el siguiente codigo pero no se como hacerlo gradual....alguna idea??


Private Sub vsbTemp_Change()
    txtCent.Text = vsbTemp.Value
    txtFahr.Text = 32 + 1.8 * vsbTemp.Value
   
    lblColor.BackColor = RGB(rojo, verde, azul)
    If vsbTemp.Value = 100 Then
        lblColor.BackColor = RGB(255, 0, 0)
    End If
    If vsbTemp.Value = 0 Then
        lblColor.BackColor = RGB(255, 255, 255)
    End If
    If vsbTemp.Value = -100 Then
        lblColor.BackColor = RGB(0, 0, 255)
    End If

End Sub
Título: Re: Paso De Grados Fahrenheit A Celsius
Publicado por: BoRJiS182 en Lunes 20 de Noviembre de 2006, 21:39
ya encontre la forma para que vaya de mas a menos el color!!!!!!!!!!!!os la dejo por is quereis saberlo....lo unico que no puedo hacer lo del cambio de "Fahr a Cent" por que me salen muchos errores,lo quería intentar sacar por que eso me pondría mas nota aun...asi que si sabeis sacarlo sin que salgan errores....os lo agradecería....si no,no hace falta,muchas gracias por todo!!!!!!!!!!!!!!!!!!!!!!!!!

Ahi va el codigo:


Private Sub vsbTemp_Change()
    txtCent.Text = vsbTemp.Value
    txtFahr.Text = 32 + 1.8 * vsbTemp.Value
   
    lblColor.BackColor = RGB(rojo, verde, azul)
    If vsbTemp.Value > 0 Then
        lblColor.BackColor = RGB(255, 255 - (vsbTemp.Value * 255) / 100, 255 - (vsbTemp.Value * 255) / 100)
    End If
    If vsbTemp.Value = 0 Then
        lblColor.BackColor = RGB(255, 255, 255)
    End If
    If vsbTemp.Value < 0 Then
        lblColor.BackColor = RGB(255 + (vsbTemp.Value * 255) / 100, 255 + (vsbTemp.Value * 255) / 100, 255)
    End If

End Sub