Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Porque GetLocaleFormatSettings siempre retorna dd.MM.yyyy (https://www.clubdelphi.com/foros/showthread.php?t=49007)

QuarkBcn 10-10-2007 16:00:31

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

aeff 10-10-2007 16:32:32

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!!

QuarkBcn 11-10-2007 13:43:05

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 !!!


La franja horaria es GMT +2. Ahora son las 22:09:26.

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