8

我有一个非常基本和简单的类,如下所示:

单元装载机;

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,但我无法修复此错误。有没有人给我指路或有解决方案?

4

2 回答 2

18
var
  the : TLoader;
begin
  the := the.Create;

是不正确的。它应该是

var
  the : TLoader;
begin
  the := TLoader.Create;
于 2012-08-30T18:45:55.483 回答
6

你的语法错误。如果你正在构造一个新对象,你应该在构造函数调用中使用类名,而不是变量名:

procedure TForm1.Button1Click(Sender: TObject);
var
 the : TLoader;
begin
  the := TLoader.Create;
end;
于 2012-08-30T18:46:51.207 回答