[英]delphi access violation
问候
以下代码给出错误:
"Project prKlanten.exe reaised exception class EAccessviolation with message 'acces violation at address 004d7767 in module 'prKlanten.exe'.
Read of address 0000005C."
procedure TfmOrder.FormCreate(Sender: TObject);
begin
dm.atDier.Open;
while not dm.atDier.eof do
begin
cbKeuze.Items.Add(dm.atDier['Diernaam']);
dm.atDier.Next
end;
dm.atDier.Close;
end;
有人知道为什么吗? 如果您需要更多信息,请随时询问。
[编辑]
有关更多信息,请参阅jasper的文章。
我敢打赌,尚未创建
dm
。
我敢打赌,尚未创建
cbKeuse.Items
。
我敢打赌,尚未创建dm
。
更改此位并再次运行:
[snip]
begin
Assert(dm<>nil);
Assert(dm.atDier<>nil);
dm.atDier.Open;
while not dm.atDier.eof do
[snip]
断言通过了吗?
当您访问非您的内存时,会导致访问冲突,例如:
可能的访问冲突源(或非法/未初始化的指针):
为了提供更多帮助,我们需要知道导致访问冲突的行。
另外 ,如果将代码移动到临时按钮的临时OnClick,是否还会发生AV? 换句话说,请从OnCreate中删除代码,因为您不能100%地确保dm可以完全正常运行。 OnActivate是另一种可能性,但是您需要检查第二次激活。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.