• Jueves 2 de Mayo de 2024, 05:45

Autor Tema:  Paso De Grados Fahrenheit A Celsius  (Leído 8830 veces)

BoRJiS182

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Paso De Grados Fahrenheit A Celsius
« en: Viernes 17 de Noviembre de 2006, 17:27 »
0
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!

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #1 en: Viernes 17 de Noviembre de 2006, 17:52 »
0
Muestra tú código
El pasado son solo recuerdos, el futuro son solo sueños

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #2 en: Viernes 17 de Noviembre de 2006, 18:46 »
0
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
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

BoRJiS182

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #3 en: Sábado 18 de Noviembre de 2006, 17:31 »
0
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

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #4 en: Sábado 18 de Noviembre de 2006, 21:28 »
0
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
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

BoRJiS182

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #5 en: Domingo 19 de Noviembre de 2006, 15:06 »
0
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!!!!!!!!!!!

albertovicat

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #6 en: Domingo 19 de Noviembre de 2006, 15:27 »
0
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:

BoRJiS182

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #7 en: Domingo 19 de Noviembre de 2006, 20:34 »
0
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!

albertovicat

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #8 en: Domingo 19 de Noviembre de 2006, 23:52 »
0
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:

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #9 en: Lunes 20 de Noviembre de 2006, 04:29 »
0
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.
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #10 en: Lunes 20 de Noviembre de 2006, 05:46 »
0
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:
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

BoRJiS182

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #11 en: Lunes 20 de Noviembre de 2006, 20:02 »
0
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!

BoRJiS182

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #12 en: Lunes 20 de Noviembre de 2006, 20:45 »
0
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

BoRJiS182

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Paso De Grados Fahrenheit A Celsius
« Respuesta #13 en: Lunes 20 de Noviembre de 2006, 21:39 »
0
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