Ver Mensaje Individual
  #3  
Antiguo 19-02-2004
VictorVG VictorVG is offline
Registrado
 
Registrado: feb 2004
Ubicación: Sagunto-(Valencia)
Posts: 3
Reputación: 0
VictorVG Va por buen camino
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 :-)
Responder Con Cita