Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-10-2007
[QuarkBcn] QuarkBcn is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Barcelona
Posts: 92
Poder: 18
QuarkBcn Va por buen camino
Porque GetLocaleFormatSettings siempre retorna dd.MM.yyyy

Hola Grupo, tengo un proglema, tendo mi SO configurado para que el formato corto de fecha sea dd.MM.aaaa
Pero cuando leo estos valores a traves de GetLocaleFormatSettings, siempre me retorna

dd.MM.yyyy, esto hace que al realizar, por ejemplo un traspaso a EXCEL, donde tengo que formatear los campos fecha, no me aparezcan los digitos correspondientes al año. Es decir en EXCEL queda como, por ej. 21.05.yyyy
en lugar de 21.05.2007. Y efectivamente se debe al formato devuelto por GetLocaleFormatSettigns

Gracias de antemano por vtra ayuda
__________________
Los árboles no me dejan ver el bosque !!!
Responder Con Cita
  #2  
Antiguo 10-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
hola, despues que obtengas la cadena de formato "dd.mm.yyyy" en una variable por ejemplo, remplasas las "y" por "a", quedando así:

Código:
var
  OldFormat,NewFormat: string;
begin
  OldFormat := 'dd.mm.yyyy';
  NewFormat := StringReplace(OldFormat, 'y','a',[rfReplaceAll]);
luego que tengas el nuevo formato, entonces asígnaselo a la celda de EXCEL correspondiente.

...aunque si el problema es otro, puedes entonces leer en el registro en la clave: "HKEY_CURRENT_USER\Control Panel\International\" el valor alfanumerico "sShortDate" y obtendrás este formato, quedando así:

Código:
 
...
uses Registry;
...

var
  Reg: TRegistry;
  vShortDtFormat: string;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey('\Control Panel\International\', false);
  vShortDtFormat := Reg.ReadString('sShortDate');
  ...
espero que te sirva,
saludos!

aeff!!

Última edición por aeff fecha: 10-10-2007 a las 16:39:20.
Responder Con Cita
  #3  
Antiguo 11-10-2007
[QuarkBcn] QuarkBcn is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Barcelona
Posts: 92
Poder: 18
QuarkBcn Va por buen camino
Muchas gracias AEFF. Al final he tenido que usar el replace, ya que la busqueda en el registry tambien retorna 'yyyy' para identificar el formato del año en lugar de 'aaaa'

Saludos y gracias de nuevo !!!
__________________
Los árboles no me dejan ver el bosque !!!
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
Funcion de Que Retorna una Cadena Abel Garcia Firebird e Interbase 4 23-07-2005 10:30:02
De string mm/dd/yyyy a Date CHiCoLiTa Varios 1 29-07-2004 17:26:26
QRPrinter.PrintSetup no retorna la cantidad de copias orfeo Impresión 1 17-02-2004 20:01:46


La franja horaria es GMT +2. Ahora son las 14:44:26.


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