Delphi:Create()构造函数末尾的访问冲突

时间:2012-08-30 18:45:04

标签: delphi delphi-xe2

我有一个非常基本和简单的类:

单位装载机;

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

2 个答案:

答案 0 :(得分:16)

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

不正确。它应该是

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

答案 1 :(得分:5)

你的语法错了。如果要构造新对象,则应在构造函数调用中使用类名而不是变量名:

procedure TForm1.Button1Click(Sender: TObject);
var
 the : TLoader;
begin
  the := TLoader.Create;
end;