1

我正在使用 Delphi 10.4.1 Enterprise 并使用 SQLite 数据库编写了一个 VCL 程序。

由于我怀疑是 OneDrive 问题,我提到源代码文件夹是 OneDrive 管理的区域的一部分。

有时,在调试时,我的 Delphi 程序由于未知原因挂起,Delphi 退出,没有进一步通知。每当发生这种情况时,MainForm 和 DataModule (DM1) 之间的连接就会丢失:在 MainForm 的 Object Inspector 中,所有 DataSource 分配,即与 DataModule 中的 DataSource 的连接都消失了。此外,当我重新加载程序时,出现错误消息

模块“rtl270.bpl”中地址 500C3553 的访问冲突。读取地址 00000008

代码检查没有错误,但在编译时出现以下消息/请求:

模块“MainForm”链接到当前项目中找不到的模块“DM1”。你想删除/重定向到另一个模块的链接吗?

奇怪的是,IDE 中的 DataModule 设计表单不再可见,只剩下它的代码。因此,在 MainForm 中,DataModule 都不可见,因为 DB 控件的 DataSource 连接器中的下拉列表保持为空。最后但并非最不重要的一点是,当我尝试保存 MainForm 时,它说:

模块“*MainForm”引用了另一个模块,在加载 DM1 之前无法保存

无论我试图让它恢复正常,它都没有成功。但是,在 OneDrive 根文件夹中,我看到一个名为“ .849C9593-D756-4E56-8D6E-..etc.. ”的文件,由于其文件日期,它似乎与我的程序相关联。只能在关闭 OneDrive 时删除或修改,但重启后会恢复。

我被卡住了,已经很多天了。

有谁知道发生了什么,并且可以给我一个关于如何进行的提示?

4

1 回答 1

1

在我尝试将数据源连接恢复到位后,我发现了导致访问冲突的原因。我通过编辑 Mainform 的 DFM 文件来做到这一点,而不是直接在 Object Inspector 中。我通常在 dfm 文件中进行编辑,但似乎不允许添加带有数据源分配的行。这对我来说是一个非常艰难的教训!我很高兴程序再次运行。谢谢大家的时间,特别是@Remy。

谢谢,JGMS

于 2020-12-12T20:37:22.640 回答