Delphi TADOQuery loadFromFile错误:“字符'<'不能在属性值中使用“

时间:2010-03-11 10:46:08

标签: xml delphi ado

我有一个Delphi 2009应用程序,它使用TADOQuery组件在数据库上运行查询。当查询返回数据时,我调用TADOQuery的saveToFile过程,指定“pfXML”作为格式参数,这显然将数据保存到XML文档。这很好。

要查看数据,我有一个包含虚拟列表视图的屏幕。我在这个屏幕上使用另一个TADOQuery组件并调用loadFromFile过程来读取XML文档中的数据。然后,我可以使用TADOQuery的“fieldByName”函数在虚拟列表视图中显示数据。再次,这很好 - 或者至少,它在过去的几个月里一直很好。

我今天遇到了一个错误,我运行了某个查询,当我尝试打开报告时,出现了错误:“字符'<'不能在属性值中使用“。我认为这是一个XML错误,但我无法追查原因。

我使用Delphi的调试器查看错误出现的位置,引发异常的行是检索TADOQuery记录计数的行(即adoquery.recordCount)。如果我通过代码中的断点将鼠标悬停在.recordCount调用上,则工具提示会显示“Delphi异常,价格为1286F945美元”。

就像我说的那样,这种情况已经好几个月了,现在这个错误突然出现了。显然,数据中有一些东西正在返回而导致问题,但我不知道是什么。我扫描了XML文档,没有“<”那里的字符不属于标签。

最后,只是为了抢先想要回答“为什么你这样做?你应该这样做......”评论,应用程序的要求之一是应用程序必须允许用户运行查询并将其保存为以后离线查看,因此saveToFile / loadToFile调用。

1 个答案:

答案 0 :(得分:3)

在整个早上调试应用程序之后,我发现问题是由垃圾数据引起的,导致关闭标记(>)不在文件中某个字符串的末尾。