【发布时间】:2011-11-30 09:38:10
【问题描述】:
在 delphi 应用程序中,当我将鼠标移动到具有提示的组件时,我看到此错误: “模块‘Plibrary.exe’中地址00484F3B的访问冲突。读取地址0000026C” 为什么会这样?
调用栈:
:758e9617 KERNELBASE.RaiseException + 0x54
:458bf456 System.@UStrCmp
:00407558 @UStrCmp + $2C
Forms.TApplication.SetHint(???)
Forms.TApplication.Idle(???)
Forms.TApplication.HandleMessage
Forms.TApplication.Run Plibrary.Plibrary
:75ca1194 kernel32.BaseThreadInitThunk + 0x12
:7752b3f5 ntdll.RtlInitializeExceptionChain + 0x63
:7752b3c8 ntdll.RtlInitializeExceptionChain + 0x36"
失败的代码在 System.pas 文件的第 17732 行:“MOV ESI,[ESP]”
编辑(来自评论):
在此过程的剩余.pas 文件中:
procedure TMainForm.ShowHint(Sender: TObject);
begin
if Length(Application.Hint) > 0 then begin
StatusBar.SimplePanel := True;
StatusBar.SimpleText := Application.Hint; //this line gives error
end else
StatusBar.SimplePanel := False;
end;
【问题讨论】:
-
您至少需要包含一个堆栈跟踪。它可能是鼠标悬停事件中某处的空引用或其他东西。
-
这意味着出了点问题。你有一个应用程序..写在哪个Delphi版本?您有带有提示的组件...哪个组件?该组件是在运行时创建的吗?如果您不提供更多解释,我们无法猜测为什么会出现此错误
-
我使用“RAD Studio 2009 Version 12.0.3170.16989”,我的组件是“BitBtn”,这个组件在子窗体上,窗体是在运行时创建的。
-
您可以显示运行时表单的创建。这很可能会搞砸。
标签: delphi delphi-2009