 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
joseluisbz Invitado
|
Publicado: Jue 30 Ene, 2003 10:18 am Asunto: Cómo capturo el símbolo decimal del sistema? |
|
|
Hola...
No estoy interesado en cambiar el símbolo a través del panel de control...
En VBasic... yo hacía esto
Valor = 1/10
Caracter = Substring(String(Valor),1,1)
si se digitaba 1.1 -> 1Caracter1
si se digitaba 1,1 -> 1Caracter1
si algún usuario quiere que el símbolo decimal sea apostrofe '... hay que respetarselo.
1'1... yo quiero capturar su apostrofe...
Pero es que esto no me da... |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 30 Ene, 2003 11:21 am Asunto: |
|
|
Hola joseluisbz:
char szDecimal[16];
GetLocaleInfo( LOCALE_USER_DEFAULT, LOCALE_SDECIMAL,
szDecimal, sizeof(szDecimal) );
ShowMessage( szDecimal );
Saludos:
_Leo |
|
| Volver arriba |
|
 |
joseluisbz Lt Cmdr

Registrado: 31 Ene 2003Mensajes: 101Ubicación: Medellín - Colombia de Barranquilla
|
Publicado: Vie 31 Ene, 2003 2:03 am Asunto: Ya encontré la solución... StrToFloat? |
|
|
Hola,
Bueno ciertamente Leo la respondió primero que yo...
| Código: |
TRegistry *Reg = new TRegistry;
AnsiString DecimalSeparator;
try
{
Reg->RootKey = HKEY_CURRENT_USER;
if (Reg->OpenKey("\\Control Panel\\International",/* Already Exist*/ false))
{
DecimalSeparator = Reg->ReadString("sDecimal");
Reg->CloseKey();
}
}
__finally
{
delete Reg;
}
|
Inicié RegEdit y encontré el símbolo que había dispuesto como prueba...
Con la ruta ya sabida... Me fuí a C++Builder y busqué como leer un RegEdit... y funcionó...
Con esto soluciono el problema del StrToFloat...
| Código: |
AnsiString strNumeroComa = "12,23";
AnsiString strNumeroPunto = "12.23";
double dNumeroComa = (double)StrToFloat(strNumeroComa); //1
double dNumeroPunto = (double)StrToFloat(strNumeroPunto); //2
|
Si el sistema tiene el símbolo decimal definido como ","
Entonces habrá una excepción en //2.
Si el sistema tiene el símbolo decimal definido como "."
Entonces habrá la excepción en //1.
Ahora, si se tiene un TEdit->Text o un TEditMask->Text = ".009" y se necesita cambiar necesariamente y no se sabe cual es el símbolo correcto...
Entonces propongo que se utilice el método StringReplace donde se remplace a "." por DecimalSeparator
algo así como
| Código: |
TEdit->Text = StringReplace(TEdit->Text,".",DecimalSeparator,Opciones);
|
Debe definirse Opciones antes de ser utilizada.
Saludos y gracias por responderme  _________________ Please Response to:joseluisbz@bigfoot.com |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|