我参与了一个项目,我在计算机1上创建了项目,现在我想在计算机2上编辑和运行它。两台计算机都具有相同的操作系统和相同的Delphi版本。当我尝试在计算机2上编译项目(没有修改任何内容)时,出现了访问冲突,尽管计算机1没有问题。
这是一个FMX项目,访问权限违规发生在包含" System.Win.OleControls
的 procedure TDelegatedOleControl.CreateControl;
中> OleCheck(FPersistStream.InitNew)
"
错误发生在我的应用程序的GUI出现之前,所以我怎么知道,我的代码的哪一部分对此负责?
通常情况下,我会尝试通过向备忘录添加内容来查找错误,以查看出现问题的地方,但是在我看到任何我想知道如何知道的情况之前发生此错误,发生这种情况。
当我继续并忽略此异常时,使用应用程序似乎没有任何因为一切按预期工作而受到影响。不幸的是还有另一个问题。我在应用程序内的框架上有一个TWebbrowser。在计算机1上一切正常,但在计算机2上,当我尝试加载网站时,它显示了一堆访问冲突错误。但是,这也不会影响应用程序的使用。
网络浏览器会发现类似于40个错误的错误,其中大多数错误来自行中 FMX.Platform.Win
中的 function TPlatformWin.HandleMessage: Boolean;
包含 if FIsPostQuitMessage then
这对我来说并不重要,因为我还可以继续使用没有错误的计算机1,但是计算机2的速度要快一些,所以在计算机2上修复这些错误会很好。 / em>的
可能导致此错误的原因是什么?它们为什么只出现在计算机2上?
更新
最初这个项目是一个VCL项目,我设法"转换"进入FMX项目。我之前已经完成了很多这个版本,这不是一个问题,因为它有效,而且我只是重复使用了可视化组件,由于这是很多工作,因此手动重新创建会很痛苦。这可能是导致错误吗?我不能相信这就是计算机1完全没有问题的原因
UPDATE2
即使在调用FormCreate
之前,应用启动时出现错误,因此我不知道如何跟踪此错误,因为我的代码似乎没有任何责任。
UPDATE3
我忘了提到,我开始在计算机2上开发项目,然后我转移到计算机1,它工作正常,当我试图回到计算机2时,上述情况发生了。
UPDATE4 FormCreate过程开始之前的错误是this,它指向this 很久以前我删除了IE并忘了它。这应该是问题,因为在计算机上IE仍然可用,并且没有出现错误。
答案 0 :(得分:1)
此问题出现在urlmon.dll中。问题是由于IE,而不是你的应用程序,建议解决方法是删除并重新安装IE或修复它
尝试通过此网址https://www.experts-exchange.com/questions/10316551/Access-violation-fault-in-module-urlmon-dll.html
提供的方法答案 1 :(得分:-2)
看起来像权限issue.try以管理员权限运行您的应用程序。放置调试点或日志以查看此错误的确切位置
是一个不错的选择