Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Quitar punto final del mes corto en FormatDateTime (https://www.clubdelphi.com/foros/showthread.php?t=90827)

rcarrillom 13-09-2016 00:37:31

Quitar punto final del mes corto en FormatDateTime
 
Pues eso, que en Delphi 10 Seattle, al usar FormatDateTime('dd/mmm/yyyy hh:mm',...) con cualquier valor fecha válido, me regresa el nombre corto del mes terminado en punto, por ejemplo 01/ene./2015, y quiero que me regrese 01/ene/2015, ya he buscado donde se cargan los nombres cortos pero solo he encontrado que se cargan desde recursos, alguien ha tenido el mismo problema? cómo lo ha solucionado? Uso windows 10 64bits español méxico, Gracias.

Delphius 13-09-2016 01:39:27

Pues acabo de probar en Delphi Berlin 10.1 Starter y funciona apropiadamente. Regresa el mes sin punto.
¿No será que tendrás algún desliz de dedo por ahí?

Saludos,

AgustinOrtu 13-09-2016 04:22:31

De todos modos le podes sacar el punto al string

Neftali [Germán.Estévez] 13-09-2016 08:41:20

Es posible que tenga que ver con la configuración regional establecida.
Si quieres asegurarte de que no van a aparecer puntos, lo mejor sería eliminarlos o quitar el nombre del mes como letra y sustituirlo por los números.

roman 13-09-2016 15:58:22

En Windows 10, Configuración regional México, las abreviaturas de mes aparecen con el punto al final. ¿Cómo solucionarlo? Ya lo dijo Agustín, quítale el punto. Eso lo puedes hacer con la variable global FormatSettings.ShortMonthNames:

Código Delphi [-]
for I := Low(FormatSettings.ShortMonthNames=) to High(FormatSettings.ShortMonthNames) do
  FormatSettings.ShortMonthNames[i] := ChangeFileExt(FormatSettings.ShortMonthNames[i], '');

O bien, creando tu propia instancia de TFormatSettings, quitando el punto y pasando la instancia como tercer parámetro a FormatDateTime.

LineComment Saludos

Delphius 13-09-2016 16:10:23

Cita:

Empezado por roman (Mensaje 508718)
En Windows 10, Configuración regional México, las abreviaturas de mes aparecen con el punto al final. ¿Cómo solucionarlo? Ya lo dijo Agustín, quítale el punto. Eso lo puedes hacer con la variable global FormatSettings.ShortMonthNames:

Código Delphi [-]for I := Low(FormatSettings.ShortMonthNames=) to High(FormatSettings.ShortMonthNames) do FormatSettings.ShortMonthNames[i] := ChangeFileExt(FormatSettings.ShortMonthNames[i], '');


O bien, creando tu propia instancia de TFormatSettings, quitando el punto y pasando la instancia como tercer parámetro a FormatDateTime.

LineComment Saludos

¿Y porqué le ponen el punto en México? :confused:
De las opciones para su solución que se dan, me parece que la más apropiada es la última: crear una propia instancia de TFormatSettings apropiada.
Y obviamente la que si se debe descartar es la de alterar la configuración regional... como lo solían hacer algunos programas tan típico de Moco$oft :rolleyes:

Saludos,

roman 13-09-2016 16:44:09

Cita:

Empezado por Delphius (Mensaje 508720)
¿Y porqué le ponen el punto en México? :confused:,

Porque las abreviaturas llevan punto.

Por otra parte, probé la configuración regional argentina y me pone sept. (con punto) en lugar de sep..

LineComment Saludos

Delphius 13-09-2016 17:13:47

Cita:

Empezado por roman (Mensaje 508721)
Porque las abreviaturas llevan punto.

Por otra parte, probé la configuración regional argentina y me pone sept. (con punto) en lugar de sep..

LineComment Saludos

Si, las abreviaturas llevan punto. Es cierto. Pero una excepción es cuando se está dando una fecha.
Acá en Argentina no ponemos punto en las fechas.

Curioso que dices que te pone sept. Acá la regla es abreviarlo sin t. Y aquellos que se animen a poner Set o decir Setiembre es mal visto; aún cuando la RAE dice que se pueden usar ambos.

En mi equipo con Windows 8.1 y con configuración en Argentina este código escrito en Delphi 10.1 Berlin Starter:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(FormatDateTime('aaaa dd/mmm/yy hh:mm:ss',Now));
end;

Me arroja esto: martes 13/sep/16 12:12:37

Saludos,

roman 13-09-2016 17:22:33

Yo también omito el punto. Pero si nos atenemos a la RAE:

Cita:

Empezado por RAE
ABREVIATRURA. 1. Es la representación gráfica reducida de una palabra o grupo de palabras, obtenida por eliminación de algunas de las letras o sílabas de su escritura completa y que siempre se cierra con un punto.

Ahora, me extraña lo que comentas de que es mal visto usar setiembre, ya que en México, muchas películas argentinas, libros y traducciones usan esa forma.

LineComment Saludos

Delphius 13-09-2016 18:05:52

Cita:

Empezado por roman (Mensaje 508723)
Yo también omito el punto. Pero si nos atenemos a la RAE:



Ahora, me extraña lo que comentas de que es mal visto usar setiembre, ya que en México, muchas películas argentinas, libros y traducciones usan esa forma.

LineComment Saludos

Pues se ve que el "siempre" es relativo porque más abajo en el texto menciona algunas excepciones. :rolleyes:

Acá es habitual decir Septiembre, y miramos raro a quien no le pone la p. Tendría que fijarme bien en los libros y traducciones, pero desde que tengo uso de razón acá le ponemos p. Es tan arraigado esa P acá que en las escuelas le da preferencia a Septiembre y se le corrije a quien no la ponga (aunque entiendo que está mal corregir esto).

Aún una razón de peso para decir Septiembre: proviene de Séptimo. En el calendario romano, antes de la entrada en vigencia del gregoriano, era el 7mo mes del calendario. Con el calendario gregoriano se desplazó 2 meses.

Saludos,

rcarrillom 13-09-2016 18:13:38

Generó debate el punto :eek:. Bien, como sugieren, revisaré la configuración regional del Windows y si no puedo ponerla a punto a las necesidades del usuario, ajustaré el FormatSettings al inicio de mi aplicación.

Como nota, no había visto nunca en ninguna versión de Windows con la configuración regional de México la inclusión del punto, he programado en casi todos los Windows excepto el 8 y no, no había punto.

Gracias a todos.

roman 13-09-2016 18:53:11

Cita:

Empezado por rcarrillom (Mensaje 508727)
revisaré la configuración regional del Windows y si no puedo ponerla a punto a las necesidades del usuario, ajustaré el FormatSettings al inicio de mi aplicación.

No deberías cambiar la configuración regional del usuario, sólo cambiar el FormatSettings.

Cita:

Empezado por rcarrillom (Mensaje 508727)
no había visto nunca en ninguna versión de Windows con la configuración regional de México la inclusión del punto, he programado en casi todos los Windows excepto el 8 y no, no había punto.

Juraría que yo tampoco, pero ya ves estos chicos de Microsoft :rolleyes:

LineComment Saludos

Delphius 13-09-2016 18:57:43

Cita:

Empezado por rcarrillom (Mensaje 508727)
Generó debate el punto :eek:. Bien, como sugieren, revisaré la configuración regional del Windows y si no puedo ponerla a punto a las necesidades del usuario, ajustaré el FormatSettings al inicio de mi aplicación.

Como nota, no había visto nunca en ninguna versión de Windows con la configuración regional de México la inclusión del punto, he programado en casi todos los Windows excepto el 8 y no, no había punto.

Gracias a todos.

Es que está mal cambiar la configuración regional. Uno en todo caso debe aplicar su propia configuración dentro del sistema, que como ha dicho roman se puede hacer sobreescribiendo las variables globales (que por defecto asumen el mismo valor de la configuración regional) o bien (y que es lo más apropiado) tener una instancia propia de TFormatSettings ya con los formatos adecuados y esperados para nuestra aplicación.

Si alteras la configuración regional es posible que otras aplicaciones tengan dificultades para funcionar correctamente.

Saludos,

rcarrillom 13-09-2016 19:47:51

Cita:

Empezado por Delphius (Mensaje 508730)
Es que está mal cambiar la configuración regional. Uno en todo caso debe aplicar su propia configuración dentro del sistema, que como ha dicho roman se puede hacer sobreescribiendo las variables globales (que por defecto asumen el mismo valor de la configuración regional) o bien (y que es lo más apropiado) tener una instancia propia de TFormatSettings ya con los formatos adecuados y esperados para nuestra aplicación.

Si alteras la configuración regional es posible que otras aplicaciones tengan dificultades para funcionar correctamente.

Saludos,

Así es, dentro de Windows 10 no he encontrado dónde modificar los nombres a pelo y sé que no es conveniente, el enfoque que siempre he usado en cambiar el FormatSettings en mi aplicación. También opino que es una reverenda estupidez cambiar los formatos o valores de fecha y hora sin aviso, hay que poner una queja ante M$....

En mi caso me afecta porque el sistema en el que trabajo usa tickets, es un POS, y un solo caracter extra nos ha movido renglones y obviamente quejas de los usuarios inconformes con el punto, pero ya está solucionado, gracias a todos.

Al González 14-09-2016 06:35:20

Yo también omito el punto en estos casos, pues la abreviatura del mes dentro de ese formato de fecha es casi un símbolo.

Como dato anecdótico, en alguna otra versión de Windows aparecían los nombres de los meses con inicial mayúscula, lo cual era incorrecto y había que hacer ajustes también (coloco un antiguo extracto de código):
Código Delphi [-]
  If SysLocale.PriLangID = lang_Spanish Then
  Begin
    { NOTE: In Spanish, the names of days and months are written with
      lower case initial.  There is a possible related bug in Windows. }
    ghENSetLower (LongMonthNames);
    ghENSetLower (ShortMonthNames);
    ghENSetLower (LongDayNames);
    ghENSetLower (ShortDayNames);
  End;

Moraleja: Nunca dejes nada serio en manos de la configuración regional del sistema operativo.

Un breve abrazo.

Al González. :)

rcarrillom 14-09-2016 08:13:25

En efecto Al, no se puede confiar en la configuración predeterminada de Windows, ni en el programador anterior :D, menuda sorpresa que me dí cuando vi el maldito punto en las PCs clientes con Windows 10 y más que no me gusta nada la interface plana imitando a una tablet pero en una pc de Escritorio, cuestión de gustos personales.

El programador anterior, practicante, becario o como se le llame en los diferentes países (al parecer no había terminado los estudios universitarios y sus conocimientos de Delphi eran los de un semestre, que estoy seguro era Visual Studio el lenguaje principal), se basó en los colores de windows xp para "dar notoriedad" a los textos de los botones, específicamente usó clActiveCaption, en XP se ven bonitos los textos en azul chillante, pero en Windows 10 parece que el botón está deshabilitado con el tono de color... al parecer gris claro, gracias a esto, la correccion de detalles visuales y mejoras a nivel código superan en inversion de tiempo a la implementacion de nuevas funcionalidades que requieren se arreglen antes ciertos detalles... uff, sale mas barato en tiempo hacer uno nuevo que corregir el actual, pero bueno, hoy el punto ha sido eliminado ;)

Al González 14-09-2016 17:14:23

Un problema menos, Ricardo. Mantennos al tanto de ese código legado, que es un área de mi agrado cuando se trata de código Delphi.

Por cierto, no deja de sorprenderme el uso del parámetro universitario para inferir o justificar la pericia o impericia de una persona en el área del desarrollo de software. ;)


La franja horaria es GMT +2. Ahora son las 12:09:37.

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