【发布时间】:2017-12-03 03:22:04
【问题描述】:
我正在处理我在计算机 1 上创建的项目,现在我想在计算机 2 上编辑和运行它。两台计算机具有相同的操作系统和相同的 Delphi 版本。当我尝试在计算机 2 上编译项目时(不做任何修改),出现了访问冲突,尽管计算机 1 上没有问题。
这是一个 FMX 项目,访问冲突发生在 procedure TDelegatedOleControl.CreateControl; 中包含“OleCheck(FPersistStream.InitNew) 的行中的 System.Win.OleControls >”。
错误发生在我的应用程序的 GUI 出现之前,所以我怎么知道我的代码的哪一部分对此负责?
通常我会尝试通过向备忘录中添加内容来查找错误,以查看哪里出了问题,但是由于这个错误发生在我看到任何我想知道的内容之前,我想知道它发生在哪里。
当我继续并忽略这个异常时,在应用程序中玩弄似乎没有任何影响,因为一切都按预期工作。不幸的是还有另一个问题。我在应用程序内的框架上有一个 TWebbrowser。在计算机 1 上一切正常,但在计算机 2 上,当我尝试加载站点时,它显示了一堆访问冲突错误。不过,这也不会影响应用的使用。
网络浏览器抛出了大约 40 个错误,其中大部分在包含 的行中的 function TPlatformWin.HandleMessage: Boolean; 中的 FMX.Platform.Win if FIsPostQuitMessage then
这对我来说并不重要,因为我还可以继续使用计算机 1,不会出现错误,但计算机 2 的速度要快一些,因此最好在计算机 2 上修复此错误。
什么可能导致此错误,为什么它们只出现在计算机 2 上?
更新
最初该项目是一个 VCL 项目,我设法将其“转换”为 FMX 项目。我以前做过很多版本,这不是问题,因为它可以工作,而且我只是重用了视觉组件,手动重新创建会很痛苦,因为它需要做很多工作。这可能导致错误吗?我真的不敢相信这会是计算机 1 完全没有问题的原因
更新2
应用程序启动错误甚至在调用FormCreate 之前就发生了,所以我不知道如何跟踪这个错误,因为我的代码似乎没有任何责任。
更新3
我忘了提到,我开始在计算机 2 上开发项目,然后我转移到计算机 1,它工作正常,当我试图回到计算机 2 时,发生了上述情况。
更新4 FormCreate 过程开始前的错误是this,它指向this 我很久以前删除了IE并忘记了它。这应该是问题,因为计算机 1 上的 IE 仍然可用,并且没有出现错误。
【问题讨论】:
-
"两台电脑都有 ... Delphi" 在第二台电脑上调试。确保首先启用调试 DCU。
-
没有代码,没有错误描述......谁能知道这里的问题是什么?
-
在答案下方发布了错误屏幕截图,我将在几个小时内将其更新到主帖,当我可以访问我的电脑时。
标签: delphi runtime-error