微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Lazarus/Free Pascal 的 DBGrid 中加载 XML/CSV/ODB 文件?

如何解决如何在 Lazarus/Free Pascal 的 DBGrid 中加载 XML/CSV/ODB 文件?

我想在 Lazarus 的 TDBGrid 中打开一个数据库/电子表格,并且我尝试了 DBGrid1.LoadFromFile(filename); 与 xml、csv、xlsx、odb。但是对于每个文件,我都会收到一个错误

这是我使用的代码,每次尝试时'xml'都不同:

procedure TForm1.FormCreate(Sender: TObject);
begin
  DBGrid1.LoadFromFile('/home/pi/Jesse Gielen/PWS/Databeesjes/WoahWeerGegevens.xml');
end; 

当我尝试 xml 时,出现此错误EDOMHierarchyRequest in Document.InsertBefore

当我尝试 csv 时,出现此错误

Project project1 raised exception class 'EXMLReadError' (line 1 pos 1): Illegal at document level

当 xlsx:Project project1 raised exception class 'EXMLReadError' (line 1 pos 3): Invalid character

当 odb 与 xlsx 相同时:Project project1 raised exception class 'EXMLReadError' (line 1 pos 3): Invalid character

那么:如何在 Lazarus 的 DBGrid 中打开文件? 如果这不可能以任何方式实现(我会觉得这很奇怪,因为为什么会有这样的程序?)那么我的问题是:如何将 TStringgrid 转换为 TDBGrid? (因为将文件加载到 TStringgrid 中工作正常)

解决方法

你问错了问题。考虑这一点的方法是,TDBGrid 显示通过来自 TDataSet 后代的 TDataSource 提供给它的数据。因此,您需要做的是从文件中加载 TDataSet 后代,然后数据将自动显示在 TDBGrid 中(当数据集打开时)。

Lazarus 的标准组件包括多个 TDataSet 后代,包括 TMemDataSet 和 TCSVDataSet,以及 LoadFromFile 和 LoadFromStream 方法。查看最适合您需求的在线文档。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。