Question

Pour chaque ligne d'un fichier CSV, mon application doit appeler une méthode qui se lit dans chaque variable et écrit certains d'entre eux à une table en utilisant une méthode GetDataItem. par exemple.

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;

Cela fonctionne bien sauf que je dois aussi générer un ReverseDate du timbre DateTime au format aaaammjj. Cependant, toute tentative d'utiliser la variable d'horodatage semble à nouveau de lancer une exception par exemple.

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

ou

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

J'ai essayé de dupliquer la variable DateTime et de travailler sur ce lieu, ou découpant une chaîne DateTime, mais il est comme si toute manipulation supplémentaire de lance une exception lors de son exécution.

EDIT: Toutes mes excuses, sur ma machine XP je reçois maintenant l'exception:

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

Merci

Était-ce utile?

La solution

La méthode que j'utilisais pour lire la variable suivante du CSV, lisez les caractères jusqu'à la prochaine virgule. La dernière variable dans le CSV n'a pas été suivie par une virgule. Comme je ne suis pas besoin de la dernière variable de toute façon je choisi tout simplement pas à le lire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top