繁体   English   中英

delphi访问冲突

[英]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]

断言通过了吗?

当您访问非您的内存时,会导致访问冲突,例如:

  • 使用nil指针
  • 缓冲区溢出
  • 访问未初始化的指针/对象
  • 访问释放的指针/对象

可能的访问冲突源(或非法/未初始化的指针):

  • 未设置dm
  • 未设置dm.atDier
  • 未设置cbKeuze
  • dm.atDier ['Diernaam']失败

为了提供更多帮助,我们需要知道导致访问冲突的行。

另外 ,如果将代码移动到临时按钮的临时OnClick,是否还会发生AV? 换句话说,请从OnCreate中删除代码,因为您不能100%地确保dm可以完全正常运行。 OnActivate是另一种可能性,但是您需要检查第二次激活。

暂无
暂无

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

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