【发布时间】:2011-10-19 09:13:08
【问题描述】:
对于 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;
这很好用,除了我还需要从日期时间戳中生成 yyyymmdd 格式的 ReverseDate。然而,任何再次使用时间戳变量的尝试似乎都会引发异常,例如
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.
谢谢
【问题讨论】:
-
抛出了什么异常?
-
“运行时抛出异常”没有异常类型和错误信息绝对没有意义。这就像说“我的电脑坏了。我该如何修理它?” - 哎呀,如果它是 USB 电缆,则修复比问题是硬盘故障或电容器烧毁要容易得多。当您遇到错误或异常时,请给出 Exact 错误代码和错误消息,包括任何内存地址。如果您需要帮助,您越容易提供帮助,就会越快帮助您解决问题。
-
抱歉,我是 Delphi 的新手,在这种情况下不知道如何打印异常。现在,它在我编译的 Win2000 PC 上运行良好,但在我的另一台 XP PC 上运行良好,具有相同的 CSV 和数据库文件。我已将最新的异常作为编辑包含在内,但这里是:模块“ImpWintacs.exe”中的 EAccessViolation,位于 000749DA。模块“ImpWintacs.exe”中地址“000749DA”的访问冲突。读取地址 00C1FDF8。
标签: delphi datetime csv formatdatetime