Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-10-2010
Avatar de edgwin
edgwin edgwin is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guadalajara Jal. Mex
Posts: 163
Poder: 19
edgwin Va por buen camino
StrToFloat en Delphi 2010 y windows 7

Que tal amigos del foro.

Tengo un problema con la configuracion regional de windows 7.

La configuracion regional de windows 7 la tengo establecida como "Español Mexico" ahora, cuando ejecuto este codigo:

(Coloco un boton y una caja de texto sobre el formulario)

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  sf : string;
  f  : double;
begin
   sf := '40460.37028';
   f  := StrToFloat(sf);   ---> Aqui marca error.
end;

Lo curioso es que cuando cambio la configuracion regional a "Ingles (Estados Unidos)" se ejecuta sin problemas.

Repito, esto solo bajo Windows 7 (ignoro si en Windows vista tambien) ya que en Windows XP si funciona OK!

Alguien me puede ayudar!?

Saludos!
Responder Con Cita
  #2  
Antiguo 09-10-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Supongo que el error es precisamente por lo que estas mencionando,(la configuracion regional), y eso ocurre precisamente por que en algunas configuraciones regionales se trabaja como separador decimal con el punto ( . ) y en otras configuraciones se trabaja con el caracter coma ( , ), en todo caso lo corecto que veo es hacerlo así:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  sf : string;
  f  : double;
begin
   sf := '40460,37028';//<--He cambiado el punto ( . ) por coma ( , )  
   f  := StrToFloat(sf);//   ---> Aqui ya no te marcará un error  
end;
Espero te sea de utilidad.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #3  
Antiguo 09-10-2010
Avatar de edgwin
edgwin edgwin is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guadalajara Jal. Mex
Posts: 163
Poder: 19
edgwin Va por buen camino
Gracias rgstuamigo por tu respuesta.

Me serviria si el dato de "sf" es constante pero desafortunadamente en el codigo real, viene de un "IdClient.IOHandler.ReadLn()", es decir, el dato lo manda el servidor y en el servidor la configuracion regional esta en "Español (mexico)".

Lo resolvi, pero estoy casi seguro que va a volver a pasar:

1) Cambie la configuracion regional a "Ingles (EUA)"
2) Corri el programa, antes de ejecutar el proceso donde marca el error, volvi a cambiar la configuracion regional a Español (Mexico).
3) Corri el proceso y ya no me marco el error.
4) Cerre el programa y volvi a correrlo, ejecute el proceso que marcabaa error y ya no lo hizo.

Saludos!
Responder Con Cita
  #4  
Antiguo 09-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola edgwin.

Podrías probar así:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  sf : string;
  f  : double;
begin
  DecimalSeparator:= '.';  // o para coma: ','
  sf := '40460.37028';
  f  := StrToFloat(sf);
end;

Si no querés que quede alterada la configuración decimal para el resto del programa:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  sf : string;
  f  : double;
  aux: char;
begin
  aux:= DecimalSeparator;
  DecimalSeparator:= '.';
  sf := '40460.37028';
  f  := StrToFloat(sf);
  DecimalSeparator:= aux;
end;

Saludos.

Última edición por ecfisa fecha: 09-10-2010 a las 21:56:59.
Responder Con Cita
  #5  
Antiguo 09-10-2010
Avatar de edgwin
edgwin edgwin is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guadalajara Jal. Mex
Posts: 163
Poder: 19
edgwin Va por buen camino
Gracias por la resupuesta.

Lo voy a probar el lunes, ahorita voy de salida. Le comentare los resultados.

Saludos!
Responder Con Cita
  #6  
Antiguo 11-10-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
solo por si las dudas:
http://www.clubdelphi.com/foros/showthread.php?t=65534
__________________

Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
INDY (Delphi 2010) con Windows 2000 y Framework 2.0 ?? JordiP Varios 2 24-02-2012 10:21:06
Hacer que Delphi 2010 luzca como Delphi 7 jorosmtz La Taberna 0 11-04-2010 22:45:36
Listview Problema en StrToFloat pablonill OOP 3 01-08-2008 13:01:17
StrtoFloat mjjj Varios 2 27-12-2007 18:32:06
Problemas con StrToFloat MaMu Varios 1 08-07-2007 09:25:10


La franja horaria es GMT +2. Ahora son las 22:31:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi