简体   繁体   English

在IDE中打开任何项目或在Delphi 7中创建新项目时的AV

[英]AV in IDE when opening any project or creating new in Delphi 7

After many years of trouble-free use, Delphi 7 is now throwing an Access violation at address 40233A3E in module 'vclx70.bpl'. 经过多年的无故障使用,Delphi 7现在在模块“ vclx70.bpl”中的地址40233A3E上引发了访问冲突。 Read of address 0000021C. 读取地址0000021C。

When starting the IDE, the default empty project and unit/form appear and compile and run fine. 启动IDE时,将显示默认的空项目和单位/表单,并可以正常运行。

I'm developing Windows apps, running on Windows 7 (x64). 我正在开发在Windows 7(x64)上运行的Windows应用程序。

I haven't installed any new packages or tools in many, many months. 我已经很多月没有安装任何新的软件包或工具了。

I stopped, dead in the water, unable to work. 我停下来,死在水中,无法工作。

Any suggestions other than a complete rip and re-install (which takes many hours...) 除了完整的翻录和重新安装以外,还有其他建议(这需要很多小时...)

EDIT: I un-installed and re-installed Delphi 7. Now I'm getting Access violation in vcl70.bpl. 编辑:我卸载并重新安装了Delphi7。现在我在vcl70.bpl中遇到访问冲突。 I would have thought that uninstalling D7 would completely remove all of its libraries, etc... Are there folders that I should manually delete after uninstalling D7? 我本以为卸载D7会完全删除其所有库,等等。。。卸载D7后是否应该手动删除文件夹?

Problem fixed (and major machine rebuild averted!) 问题已解决(避免了大型机的重建!)

Gerrit Beuze of ModelMaker Tools suggested elsewhere: ModelMaker Tools的Gerrit Beuze在其他地方建议:

 Remove all .dsk (project desktop) files for the project you try to load,
 Temp remove all *.dst (desktop files) from C:\Program Files\Borland\Delphi7\Bin

After performing these steps, the problem appears to have been fixed. 执行这些步骤后,问题似乎已解决。

A read at that low a memory address is typically a problem in a third-party component. 如此低的内存地址读取通常是第三方组件中的问题。 However, you say you haven't installed anything new in months. 但是,您说您已经几个月没有安装任何新产品了。

The other thing that's strange is that you're getting the error in vclx70, which is one of the CLX libraries. 另一个奇怪的是,您在vclx70中得到了错误,这是CLX库之一。 Are you doing anything using the CLX (leftover cross platform - Kylix) forms or dialogs? 您是否正在使用CLX (剩余跨平台-Kylix)表单或对话框做任何事情?

If not, you might do a search in your source for QDialogs , QForms , or any of the other units in %PROGRAMFILES%\\Borland\\Delphi7\\Source\\Clx , and see if something mistakenly was added that you didn't intend that's pulling CLX into your project. 如果不是这样,您可以在源代码中搜索QDialogsQForms%PROGRAMFILES%\\Borland\\Delphi7\\Source\\Clx任何其他单位,然后查看是否添加了错误的内容,以防止您拖拉它CLX进入您的项目。 If so, change it to the VCL version instead (by just removing the 'Q' from the front of the unit name in your source). 如果是这样,请将其更改为VCL版本(只需从源代码中的单元名称前面删除“ Q”)即可。

EDIT: You might try going into the registry (D7 would be HKCU\\Software\\Borland\\Delphi\\7.0 ) and temporarily changing the name of the delphiCLXide entry in Known IDE Packages to something else (put an underscore in front of the name or something). 编辑:您可以尝试进入注册表(D7为HKCU\\Software\\Borland\\Delphi\\7.0 ),然后将“ Known IDE Packages中的delphiCLXide条目的名称临时更改为其他名称(在名称或其他内容前面加上下划线) )。 Then start the IDE. 然后启动IDE。 You should get an error message about Delphi being unable to load the package, and asking if you want to try and load it again in the future. 您将收到一条有关Delphi无法加载程序包的错误消息,并询问您是否希望将来再次尝试加载它。 Answer 'Yes', and let the IDE continue to load. 回答“是”,然后让IDE继续加载。 Then try again with your project and see what happens. 然后,再试一次您的项目,看看会发生什么。

The step above removes CLX temporarily from loading in the IDE designer. 上面的步骤暂时将CLX从IDE设计器中加载下来。 (Don't worry, you can just rename the key again to put it back if it's not the problem. If it doesn't come back, make sure the IDE didn't add an entry in the Disabled Packages entry; if it did, just remove it.) (不用担心,如果不是问题,您可以再次重命名该密钥以将其放回。如果不存在,请确保IDE没有在“ Disabled Packages条目中添加条目;如果确实存在,只需将其删除。)

If this works, you can open the project options (.DOF) file for your project, and remove the CLX libraries from the Packages list. 如果可行,则可以打开项目的项目选项(.DOF)文件,然后从“ Packages列表中删除CLX库。 This prevents it from being included when your project is loaded. 这样可以防止在加载项目时将其包括在内。 Once you've established whether the problem actually 一旦确定问题是否确实存在

My first suggestion would be to use XP Mode or another VM infrastructure to run such an old Delphi version on Windows 7 (I do it that way). 我的第一个建议是使用XP Mode或其他VM基础结构在Windows 7上运行这样的旧Delphi版本(我这样做)。

Another potential method is to use the compatibility settings in Windows 7 to set it to XP and to exempt the Delphi 7 process from DEP (data execution prevention) policies the system may otherwise impose. 另一种可能的方法是使用Windows 7中的兼容性设置将其设置为XP,并使Delphi 7进程免于系统可能采用的DEP(数据执行保护)策略。 I've had some trouble with enabled DEP with older Borland IDEs and also VS 2003. 我在使用较旧的Borland IDE和VS 2003启用DEP时遇到了一些麻烦。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM