加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 外部异常C0000006

发布时间:2020-12-15 10:16:08 所属栏目:大数据 来源:网络整理
导读:我在Delphi中编写了一些程序,当我从一个磁盘上运行它时,在某些时候,我需要在应用程序运行时拔下钥匙上的磁盘。如果我在一台计算机上这样做,至少有一千克的ram,一切都没问题。当我在512MB的机器上这样做时,我得到一个外部异常C0000006。如果我没有错,
我在Delphi中编写了一些程序,当我从一个磁盘上运行它时,在某些时候,我需要在应用程序运行时拔下钥匙上的磁盘。如果我在一台计算机上这样做,至少有一千克的ram,一切都没问题。当我在512MB的机器上这样做时,我得到一个外部异常C0000006。如果我没有错,这是因为操作系统正在尝试读取下一行代码,但是找不到它的资源(意思就是应用程序没有被加载到ram),这是荒谬的,因为它是一个500kb的应用程序。

我该如何解决?或者至少以更优雅的方式来处理这个异常? (因为它是一个外部异常,因为我无法捕获它)。

哦,我的Delphi应用程序是Windows XP下的控制台应用程序。

解决方法

您需要做的是告诉Windows将整个程序加载到内存中,而不是允许它在需要时要求加载页面。我已经成功地完成了运行CD的应用程序。我现在没有我的代码,但我记得,我发现了如何在源代码中为梦幻般的开源安装程序Inno Setup提供了提示。

编辑:实际上,做了一点研究后,可以使用Delphi编译器指令来告诉windows加载完整的可执行文件。如果您有Delphi>这将有效果,永远不会得到外部异常。

将此行放在应用程序项目文件中:

{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}

这告诉Windows可执行文件将从可移动介质中使用,因此将可执行文件加载到内存(或交换文件)中。那么你不需要担心首先将文件复制到机器上等等。

对于德尔福2006年,您可以下载强制要执行的页面的路径。在C here中有一个如何做的例子(除非你找到一种在链接时间之后修改PE标题的方法,这看起来很复杂)

N – [

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读