Pregunta

Para cada línea de un archivo CSV, mi aplicación debe llamar a un método que lee en cada variables y escribe algunas de ellas en una tabla utilizando un método GetDataitem. p.ej

Var
Item: String;
Tmp: String;
Rdate: String;
TmpDateTime: TDateTime;

begin
Table1.Append'
Tmp := GetDataItem(Data, Item); {Ignore}
Tmp := GetDataItem(Data, Item); {Ignore}
Tmp := GetDataItem(Data, Item); {Members ID}
Table1.FieldByName('Member ID').AsString := UpperCase(Tmp);
TmpDateTime := StrToDateTime(etDataItem(Data, Item));
Table1.FieldByName('Arrival Date').AsString := FormatDateTime('dd/mm/yyyy',TmpDateTime);
Table1.FieldByName('Arrival Time').AsString := FormatDateTime('hh:mm:ss',TmpDateTime);
...
Table1.Post;

Esto funciona bien, excepto que también necesito generar un revertido del sello DateTime en el formato yyyymmdd. Sin embargo, cualquier intento de usar la variable de marca de tiempo nuevamente parece arrojar una excepción, por ejemplo,

RDate := FormatDateTime('yyyy',TmpDateTime) + FormatDateTime('mm',TmpDateTime) + FormatDateTime('dd',TmpDateTime);

o

RDate := FormatDateTime('yyyymmdd',TmpDateTime);

He intentado duplicar la variable DateTime y trabajar en eso, o dividir una cadena de fecha y hora, pero es como si cualquier manipulación adicional de lanza una excepción cuando se ejecute.

Editar: Disculpas, en mi máquina XP ahora obtengo la excepción:

EAccessViolation in the module 'ImpWintacs.exe' at 000749DA. Access violation at address "000749DA" in module 'ImpWintacs.exe'. Read of address 00C1FDF8.

Gracias

¿Fue útil?

Solución

El método que estaba usando para leer la siguiente variable del CSV, lea los chars hasta la próxima coma. La última variable en el CSV no fue seguida por una coma. Como no necesitaba la última variable de todos modos, elegí no leerla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top