Delphi32 en el siglo XXI

Se ha dado en llamar "bug del año 2000" a una serie de errores provocados por la costumbre de los seres humanos de trabajar con años de dos cifras. Esto que hasta ahora producía unos problemas muy llevaderos, con el cambio de siglo se van a hacer mas acuciantes.

Delphi, como muchos lenguajes de programación, gestiona internamente la fecha como el número de días transcurridos desde el 28 de diciembre de 1899, lo cual, es pefectamente correcto para el siglo XXI, XXII y venideros, ya que para él el 31-12-1999, será el 36525, el 1 de enero del 2000 será el 36526, y así sucesivamente.

Pero inevitablemente es necesario llevar las fechas a la pantalla para mostrárselas al usuario y recoger las que este nos introduce, lo cual hace imprescindible la conversión de esta fecha numérica a formato de texto. Es aquí dónde empiezan los problemas ya que para convertir el 36525 a fecha no hay error posible, pero ¿cómo convierte Delphi32 la cadena 01/01/99 a fecha? ¿y la cadena 01/01/01?.

Existen dos grupos de funciones que recogen cadenas de texto debidamente formateadas y las convierten en fechas:

La solución a este problema es fácil: utilizar siempre fechas con el año de cuatro cifras, pero esto

tiene dos inconvenientes.

La solución que os proponemos modifica internamente las llamadas a los dos grupos de funciones nombrados anteriormente, haciendo posible que la conversión de fechas en formato cadena de texto con año de dos cifras a formato fecha interno de Delphi32 se ajuste a un año mínimo parametrizable por el desarrollador y modificable en tiempo de ejecución. Este año mímimo se trabaja desde una propiedad de un componente no visual que se coloca en el Form principal de la aplicación.

Una vez instalado hay que recompilar toda la aplicación, componentes de terceros incluidos, en caso de tener el código fuente. Para ello aconsejamos utilizar la opción "Project|Build All" del menú principal de Delphi.

Para instalar este sistema debemos descomprimir el paquete en un directorio y ejecutar install.exe

Este proceso sustituye el archivo de estándar de Delphi, SysUtils.dcu por nuestra propia versión, guardando el archivo original como SysUtils.old. Así mismo, el proceso de instalación crea el archivo install.log que contiene información para UnInstall.exe que realizará el proceso de desinstalación, en el caso de ser necesario. Los procesos de instalacion y desinstalacion requieren como condición imprescindible que Delphi no este ejecutándose.

En caso de que el proceso de instalación fallara, el usuario no debería tener mayor problema para sustituir a mano el archivo SysUtils.dcu por el que se incluye en el paquete, en el path de Delphi, habitualmente \Borland\Delphi32\LIB realizando una copia de seguridad del original previamente.

Después de ejecutar install.exe, debemos utilizar la opción "Component|install" del menú principal de Delphi para instalar el componente no visual que gestiona el año mínimo, darle un valor a la propiedad FirstYear y reconstruir toda la aplicación.