Hola!!
No existe ninguna función definida por Borland que haga lo que tu necesitas salvo la que has probado, pero claro, esta se ciñe al formato de fecha/hora establecido por el sistema y te da una excepción.
Yo creo que deberías almacenar la fecha con un formato TDateTime y cuando necesites mostrarla le das el formato "Jue, 19 - 2 - 2004" con FormatDateTime, pero nunca almacenes como texto una fecha o por lo menos con ese formato, una cosa es como guardas los datos y otra como los muestras.
Pero por si es necesario u obligado que la fecha te llegue en ese formato a la hora de trabajar con ella, puedes optar por usar este código de C:
double ExtraerFecha(char *stringFecha) {
Word dia, mes, anyo;
sscanf(stringFecha, "%*s %hu - %hu - %hu", 0, &dia, &mes, &anyo);
return EncodeDate(anyo, mes, dia).Val;
}
El inconveniente es que la tienes que exportar a Delphi creando una DLL, un OBJ o un LIB.
Otra opción es que implementes una rutina en Delphi que quite hasta el primer espacio, y luego vaya quedándose con lo que sean números y separándolo en variables, vamos, lo que hace 'sscanf' pero solo para tu caso, sin tener que pasarle cadena de formato.
Otra opción es que le eches un vistazo a las variables globales “DateSeparator”, “LongDateFormat” y “ShortDateFormat”; escribe una de estas en el editor de Delphi en cualquier sitio y pulsa ‘F1’ verás que cantidad de información.
Aunque lo mejor es que me hagas caso a lo que te he puesto al principio, guarda siempre el dato en TDateTime y muéstralo como te venga en gana.
Suerte :-)
|