Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   ayuda para leer una fecha desde un txt (https://www.clubdelphi.com/foros/showthread.php?t=53557)

negro_sto 23-02-2008 21:31:01

ayuda para leer una fecha desde un txt
 
Hola, mi problema es el siguiente, tengo que leer una lista de datos desde un txt y cargarlos a un vector, el tema es que si cargo una fecha (señalada con:"-->aca"), al correr el programa, lo compila, pero enseguida me sale el siguiente aviso:

Cita:

Debugger Exeption Notification

Proyectproyect1.exe raised exception Class EConverter error whit message"" is not a valid date'.Process sttoped. use Step or Run to continue.
Si leo un txt sin fecha pero con todo lo otro anda bien.
aguien me puede ayudar??, desde ya muchas gracias
Estoy trabajando con c++ builde 6, el codigo es el siguiente:

Código:

ifstream archie("historial.txt");
if(archie.is_open()){
        while(!archie.eof()){
        datos aux;
        archie.ignore();
        getline(archie, aux.a);
        if(aux.a=="zz")break;
        getline(archie, aux.b);
        getline(archie, aux.c);
        string j, y;
        getline(archie, j);
        aux.d=StrToTime(j.c_str());
        getline(archie, y);
        aux.e=StrToTime(y.c_str());
        archie>>aux.f;
        string u;
        /*aca--->*/      getline(archie, u);
        /*aca--> */      aux.g=StrToDate(u.c_str());

        au.v.push_back(aux);
        }
        archie.close();
        }
        else
        ShowMessage("no se pudo abrir el archivo");


escafandra 23-02-2008 22:18:09

Vigila el formato en el que está escrita la fecha en modo texto. No vale cualquier formato. Esta puede ser la causa del error que obtienes.

Repasa la función FormatDateTime en la ayuda del mismo Builder:
Código:

extern PACKAGE AnsiString __fastcall FormatDateTime(const AnsiString Format, System::TDateTime DateTime)
Saludos.

negro_sto 24-02-2008 00:28:01

Cita:

Empezado por escafandra (Mensaje 268185)
Vigila el formato en el que está escrita la fecha en modo texto. No vale cualquier formato. Esta puede ser la causa del error que obtienes.

Repasa la función FormatDateTime en la ayuda del mismo Builder:
Código:

extern PACKAGE AnsiString __fastcall FormatDateTime(const AnsiString Format, System::TDateTime DateTime)
Saludos.

Hola gracias por la respuesta.
A la fecha la cargo al txt asi:

archi<<DateToStr(ith->g).c_str()<<endl;

ith->g es una variable TDateTime.
si es a eso que te referis (si no no te entendi,perdon), para cargarlo no me da error.Al correr el programa cuando todavia el archivo no existe,lo crea bien, creo que el problema esta cuando lo lee...
espero ayuda gracias.

escafandra 24-02-2008 00:49:38

Estas leyendo con un getline. Antes de encontrar la fecha debe haber otro endl, es decir, la fecha debe estar en una linea separada de texto:

escribir:
Código:

file<<dato<<endl;
file<<fecha<<endl;
.
.
.

leer:
Código:

file.getline(buffer, sizeof(buffer));
...asignar a dato buffer;
file.getline(buffer, sizeof(buffer));
fecha = TDateTime(AnsiString(buffer));
.
.
.

Haz un debug poniendo un punto de parada antes de leer la fecha y ejecuta paso a paso exam9inando lo que pasa con las variables.
Examina tu archivo de texto, para ver lo que ha escrito y lo que debe leer.

Saludos.

negro_sto 24-02-2008 03:46:28

Gracias, hice un proyecto chico de prueba, y anda cargar la fecha. no se de que es el error....
Raro porque si al mio le saco la fecha anda....

negro_sto 24-02-2008 04:56:18

Cita:

Empezado por escafandra (Mensaje 268201)
Estas leyendo con un getline. Antes de encontrar la fecha debe haber otro endl, es decir, la fecha debe estar en una linea separada de texto:

escribir:
Código:

file<<dato<<endl;
file<<fecha<<endl;
.
.
.

leer:
Código:

file.getline(buffer, sizeof(buffer));
...asignar a dato buffer;
file.getline(buffer, sizeof(buffer));
fecha = TDateTime(AnsiString(buffer));
.
.
.

Haz un debug poniendo un punto de parada antes de leer la fecha y ejecuta paso a paso exam9inando lo que pasa con las variables.
Examina tu archivo de texto, para ver lo que ha escrito y lo que debe leer.

Saludos.


Era ese el error, ahora me anda, muchas Gracias!!!!


La franja horaria es GMT +2. Ahora son las 04:41:20.

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