0

对于 CSV 文件的每一行,我的应用程序需要调用一个方法,该方法读取每个变量并使用 GetDataItem 方法将其中一些变量写入表中。例如

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;

这工作正常,除了我还需要从日期时间戳生成一个 ReverseDate,格式为 yyyymmdd。然而,任何再次使用时间戳变量的尝试似乎都会引发异常,例如

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

或者

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

我已经尝试复制 DateTime 变量并对其进行处理,或者拆分 DateTime 字符串,但好像任何进一步的操作都会在运行时引发异常。

编辑:抱歉,在我的 XP 机器上,我现在得到了异常:

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

谢谢

4

1 回答 1

0

我用来从 CSV 读取下一个变量的方法,读取字符直到下一个逗号。CSV 中的最后一个变量后面没有逗号。因为无论如何我都不需要最后一个变量,所以我只是选择不阅读它。

于 2011-10-20T09:25:03.797 回答