【发布时间】:2012-08-30 18:45:04
【问题描述】:
我有一个非常基本和简单的类:
单元加载器;
interface
uses
Vcl.Dialogs;
type
TLoader = Class(TObject)
published
constructor Create();
end;
implementation
{ TLoader }
constructor TLoader.Create;
begin
ShowMessage('ok');
end;
end.
从 Form1 我这样称呼它:
procedure TForm1.Button1Click(Sender: TObject);
var
the : TLoader;
begin
the := the.Create;
end;
现在,在 the := the.Create 部分之后,delphi 显示带有 'ok' 的消息,然后给我一个错误并说 Project Project1.exe raised exception class $C0000005 with message 'access violation at 0x0040559d: read of address 0xffffffe4'.
它也显示了这一行:
constructor TLoader.Create;
begin
ShowMessage('ok');
end; // <-------- THIS LINE IS MARKED AFTER THE ERROR.
我是德尔福的新手。我正在使用 Delphi XE2,但我无法修复此错误。有人给我指路或有解决方案吗?
【问题讨论】:
-
我不知道
var instance: TLoader应该做什么。你确定你需要那个全局变量吗?您似乎打算改为声明本地TLoader变量。 -
问题是不是“我如何声明一个类”。它是 Delphi 抛出的一个异常,我无法意识到它来自错误的声明。 :)
-
@xangr 我的评论并不是真的针对你。这是一个明显的重复。我确定我已经回答过不止一次了。我相信安德烈亚斯和梅森也有。但我无法很快找到一个问题来说明这一点。 Stack Overflow 搜索并不能很好地工作,但我怀疑这是一个非常困难的问题。
-
很难找到这个问题的重复项,@David,因为很难笼统地问这个问题。我们已经看到了许多潜在问题的实例,但每次都将其呈现为“调试我的代码”问题,因为这是从不知道哪里出了问题的人的角度来表达问题的唯一方法。
-
Xangr,编译器没有警告您您正在使用未初始化的变量吗?
标签: delphi delphi-xe2