程序(用Delphi6编写的)无法正常退出(200分)

  • 主题发起人 主题发起人 blue_boy
  • 开始时间 开始时间
B

blue_boy

Unregistered / Unconfirmed
GUEST, unregistred user!
程序退出时,经常出现“"0x00505544"指令引用的"0x02594aec"内存。该内存不能为"read"”,
或者“Exception EAccessViolation in module XXX.exe at 00105544.Access violation at
address 00505544 in module "XXX.exe".Read of Address 02594AEC.”
哪位兄弟姐妹碰到过类似的问题,高分请教是什么原因造成的?如何解决?谢谢!
 
不是程序有问题,是操作系统的问题
 
是有些东东未释放就退出
建议在开始创建时用
try
except
那样即使出了问题也可正常退出
 
慢慢来,如果通不过再点RUN,就会通过,可能是你在数据库中设置成的字段的默认
值或是属性与在DEPHI中设置的有冲途。
 
同意delphilove的意见
 
用dELPHI6吧,这样的问题就少些
你的这个问题有可能出现在动态创建的
控件中。
 
应该是程序的问题!
 
首先要肯定是你的问题。然后在源码中定位错误,可以View Stack看是那个函数调用。不到万不得已不用怀疑delphi和操作系统得错误。
 
是没有释放资源!要用
try
except
finally
...
 
因为你的问题很明显是冲突引起的,肯定还有什么东东没有释放。可以针对具体问题分析
一下,我以前也遇到过这种'access violation'。
 
你调试一下,要知道问题出在什么地方,还有在创建了某些东东的时候,要释放,,,
try
finally
end ;
 
我也经常遇到这个问题。我感觉确实是DELPHI的问题,您试试打开多个DELPHI,再打开不
同的项目,然后关闭其中一个,这时就会出现这个错误。。。
 
遇到过,应该是程序问题,代码贴出来看看。
 
我原先遇到过这类现象,不过刚好和大家说的相反,我的那个程序拦截了很多系统消息,
一些资源在Close的时候给释放了,但是我觉得Close并不是程序执行的最后部分,如果你
有用到一些系统的消息,检查一下那里大概会有发现的
 
原代码太长了,有上万行,我在Delphi的环境中RUN,退出时进行跟踪,有时又不出错。
无法跟踪到具体到哪一行出错。但是运行exe文件退出时就出现上面的错误信息。
 
通常都是像一只没有缺点的狼说的那样。。。
 
这种错误很常见。
对象已经被释放,但你还在使用。给你一个例子。
点击form1的button打开form2,在form2中点击button,再关闭程序。
//在form1中
uses
unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
form2 := TForm2.Create(self);
form2.Show;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
form2.Free;
end;

//form2中
procedure TForm2.Button1Click(Sender: TObject);
begin
self.Free;
end;
 
肯定是内存的问题啦,是不是释放的顺序不对,或者没有释放?
 
基本同意影子的看法。
try
{create}
finally
{free}
 
这个问题我在编程时也碰到过,具体的原因不详,我觉得和操作系统、盗版的Delphi有关,
关掉Delphi重新运行就没有问题了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部