![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Disculpa cadetill pero a mi me parece que el error no está en FormatFloat sino en StrToFloat. De la ayuda de Delphi:
Cita:
// Saludos |
#2
|
|||
|
|||
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 ![]() |
#3
|
||||
|
||||
Cita:
Cita:
// Saludos |
#4
|
|||
|
|||
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. |
#5
|
||||
|
||||
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 |
#6
|
|||
|
|||
mmmmm, esto..... me parece que nos estamos liando
![]() ![]() ![]() Veamos el código que nos manda nuestro colega ![]() Código:
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); Código:
st:= FormatFloat('#,##.00',strtofloat(st)); ![]() Esto lo deduzco por lo que pone en la siguiente linea: Código:
ShowMessage(st); //aquí muestra el mensaje perfectamente,todo muy bien Código:
numero:= StrToFloat(st); Por eso le recomendaba que no pusiera formato (separador de millares) y, así, esta segunda transformación no le daría problemas Quizás tu te referias al primer StrToFloat??? Si es así, sí que te doy la razón ![]() |
#7
|
||||
|
||||
Cita:
![]() Marto uy tú tienen toda la razón. Es que yo, como compilador omito los comentarios ![]() Siendo como me han hecho ver el asunto es clarísimo: A StrToFloat sólo pueden pasársele números reales de " a de veras": dígitos, coma (o punto) decimal, + o - y la E de notación exponencial, y no adornados como sucede en la segunda llamada // Disculpas pd: Lo naranja fue añadido. Última edición por roman fecha: 28-01-2004 a las 17:58:49. |
#8
|
||||
|
||||
Cita:
Código:
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 //Hemos pasado el FomatFloat bien, ya que ednumero.Text estaba sin //adornar pero ahora st ya tiene "adornos" numero:= StrToFloat(st); //aqui es donde peta, ya que le pasamos a StrToFloat //el resultado de FormatFloat end;
__________________
E pur si muove |
#9
|
||||
|
||||
Cadetill, me ganaste en la respuesta por dos minutos!!!!
__________________
E pur si muove |
![]() |
|
|
![]() |
|