PDA

Ver la Versión Completa : Porque GetLocaleFormatSettings siempre retorna dd.MM.yyyy


QuarkBcn
10-10-2007, 16:00:31
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í:


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í:


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