![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Otra vez dudas tontas
Hola de nuevo:
Tengo el siguiente problema: Yo hago lo siguiente al pulsar un botón: procedure TForm1.Button1Click(Sender: TObject); var numero : real; st : string; begin st:= ednumero.Text; st:= FormatFloat('#,##.00',strtofloat(st)); ShowMessage(st); //aquí muestra el mensaje perfectamente,todo muy bien numero:= StrToFloat(st); Y justo en el paso de string a float me da un error diciendo que ese no es un valor float [project project1.exe raised exception class eConvertError with message “1.000,00’ is not a valid floating point value’.Proccess stopped], yo no lo entiendo. A ver si me podéis ayudar por favor porque es algo rarísimo. Gracias de antemano.
__________________
Letty http://usuarios.lycos.es/buffangel |
|
#2
|
|||
|
|||
|
Es normal, porque al ponerle el formato, le estás añadiendo el punto de los millares que, al hacer la transformación, no sabe que es.
Puedes hacer varias cosas: 1.- No pones en la máscara el punto de los millares (algo así 0.00) 2.- Te curras una función que te quite el separador de millares y que te haga (ya que estmamos) la conversión de tipos 3.- Accedes otra vez al componente para recuperar de nuevo el valor |
|
#3
|
||||
|
||||
|
Disculpa cadetill pero a mi me parece que el error no está en FormatFloat sino en StrToFloat. De la ayuda de Delphi:
Cita:
// Saludos |
|
#4
|
|||
|
|||
|
Quedas disculpado Román pero, yo no decía (o no pretendía decir) que el error fuera del FormatFloat. Si te fijas, decía en mi mensaje anterior :
Cita:
Por eso una de las coss que le sugería, era no poner los odornos (opción 1), para que StrToFloat supiera que hacer con el numerito en qüestión. Nos leemos ![]() |
|
#5
|
||||
|
||||
|
Cita:
Cita:
// Saludos |
|
#6
|
|||
|
|||
|
Cita:
Suponiendo que el número a tratar es 1234.56 Si pongo una máscara tal que esta: #,##0.00 el FormatFloat nos devolverá un string tal que este 1.234,56, con lo que la función StrToFloat nos fallará debido a lo que ya se ha comentado En cambio, si pongo una máscara tal que esta: 0.00, el FormatFloat nos devolverá un string así 1234,56 con lo que la función StrToFloat no nos fallará ya que es un número válido (sin adornos) Repito que no es problema del FormatFloat (éste hace bien su trabajo), sinó de la manera de interpretar el string que se le pasa al StrToFloat. |
|
#7
|
||||
|
||||
|
Ya nos estamos desviando
.Volvamos al mensaje #4 donde se nos informa: Cita:
Tu dices Cita:
StrToFloat, en el código original, es un parámetro de FormatFloat y estarás de acuerdo en que los parámetros de una función se evalúan antes que la función. // Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|