用d6在写一个程序,程序中用到了好多控件,程序在退出时就报下面的错误:Project fundclient.exe raised exception class EAccessViolation with message 'Access violation at address 00000000. Read of address 00000000'.我自己跟踪了一下在主程序的最后一句end。后面报出来的。我现在不知道怎么跟踪,用EurekaLog试了下,上面显示最后的call stack 如下:<ExceptionThread ID="2200" Priority="0" Class="" MainThread="True">
<Line Address="40037EE8" Module="rtl60.bpl" Unit="Classes" Class="" Procedure="StdWndProc" Number="" Offset=""/>
<Line Address="77D2F3C7" Module="user32.dll" Unit="" Class="" Procedure="SendMessageA" Number="" Offset=""/>
<Line Address="77D2F383" Module="user32.dll" Unit="" Class="" Procedure="SendMessageA" Number="" Offset=""/>
<Line Address="400F4602" Module="vcl60.bpl" Unit="Forms" Class="TApplication" Procedure="Destroy" Number="" Offset=""/>
<Line Address="4000572C" Module="rtl60.bpl" Unit="System" Class="TObject" Procedure="Free" Number="" Offset=""/>
<Line Address="40005724" Module="rtl60.bpl" Unit="System" Class="TObject" Procedure="Free" Number="" Offset=""/>
<Line Address="40111EAF" Module="vcl60.bpl" Unit="Controls" Class="" Procedure="DoneControls" Number="" Offset=""/>
<Line Address="40111EA8" Module="vcl60.bpl" Unit="Controls" Class="" Procedure="DoneControls" Number="" Offset=""/>
<Line Address="4011213B" Module="vcl60.bpl" Unit="Controls" Class="" Procedure="Finalization" Number="" Offset=""/>
<Line Address="40006266" Module="rtl60.bpl" Unit="System" Class="" Procedure="FinalizeUnits" Number="" Offset=""/>
<Line Address="40006230" Module="rtl60.bpl" Unit="System" Class="" Procedure="FinalizeUnits" Number="" Offset=""/>
<Line Address="400066E5" Module="rtl60.bpl" Unit="System" Class="" Procedure="_Halt0" Number="" Offset=""/>
<Line Address="4000668C" Module="rtl60.bpl" Unit="System" Class="" Procedure="_Halt0" Number="" Offset=""/>
<Line Address="004EB685" Module="fun.exe" Unit="fun.dpr" Class="" Procedure="" Number="92" Offset="9"/>
<Line Address="7C92DCB8" Module="ntdll.dll" Unit="" Class="" Procedure="ZwSetInformationThread" Number="" Offset=""/>现在一点头绪都没有,请高手指点下。
<Line Address="40037EE8" Module="rtl60.bpl" Unit="Classes" Class="" Procedure="StdWndProc" Number="" Offset=""/>
<Line Address="77D2F3C7" Module="user32.dll" Unit="" Class="" Procedure="SendMessageA" Number="" Offset=""/>
<Line Address="77D2F383" Module="user32.dll" Unit="" Class="" Procedure="SendMessageA" Number="" Offset=""/>
<Line Address="400F4602" Module="vcl60.bpl" Unit="Forms" Class="TApplication" Procedure="Destroy" Number="" Offset=""/>
<Line Address="4000572C" Module="rtl60.bpl" Unit="System" Class="TObject" Procedure="Free" Number="" Offset=""/>
<Line Address="40005724" Module="rtl60.bpl" Unit="System" Class="TObject" Procedure="Free" Number="" Offset=""/>
<Line Address="40111EAF" Module="vcl60.bpl" Unit="Controls" Class="" Procedure="DoneControls" Number="" Offset=""/>
<Line Address="40111EA8" Module="vcl60.bpl" Unit="Controls" Class="" Procedure="DoneControls" Number="" Offset=""/>
<Line Address="4011213B" Module="vcl60.bpl" Unit="Controls" Class="" Procedure="Finalization" Number="" Offset=""/>
<Line Address="40006266" Module="rtl60.bpl" Unit="System" Class="" Procedure="FinalizeUnits" Number="" Offset=""/>
<Line Address="40006230" Module="rtl60.bpl" Unit="System" Class="" Procedure="FinalizeUnits" Number="" Offset=""/>
<Line Address="400066E5" Module="rtl60.bpl" Unit="System" Class="" Procedure="_Halt0" Number="" Offset=""/>
<Line Address="4000668C" Module="rtl60.bpl" Unit="System" Class="" Procedure="_Halt0" Number="" Offset=""/>
<Line Address="004EB685" Module="fun.exe" Unit="fun.dpr" Class="" Procedure="" Number="92" Offset="9"/>
<Line Address="7C92DCB8" Module="ntdll.dll" Unit="" Class="" Procedure="ZwSetInformationThread" Number="" Offset=""/>现在一点头绪都没有,请高手指点下。
在最后那个end那,用F7进Delphi源码调试一下,看是否能发现什么问题
另外如果第三方控件的问题可能就不太好处理
只能一个一个的排除了
2、解决办法:
确定最后一句end之后还有没有代码,如果还有代码或是继承窗体,则找到下面的代码进行跟踪;
如果end之后没有代码了,则有可能是第三方控件造成的问题;如果还有什么问题,请加入QQ高级群:9642802 找管理员讨论!