PDA

Ver la Versión Completa : ayuda para leer una fecha desde un txt


negro_sto
23-02-2008, 21:31:01
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:


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:


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:

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

negro_sto
24-02-2008, 00:28:01
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:

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:

file<<dato<<endl;
file<<fecha<<endl;
.
.
.
leer:

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
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:

file<<dato<<endl;
file<<fecha<<endl;
.
.
.
leer:

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!!!!