Delphi: Access Violation at the end of Create() constructor
I have a very basic and simple class like this:
unit Loader;
interface
uses
Vcl.Dialogs;
type
TLoader = Class(TObject)
published
constructor Create();
end;
implementation
{ TLoader }
constructor TLoader.Create;
begin
ShowMessage('ok');
end;
end.
And from Form1 i call it like this:
procedure TForm1.Button1Click(Sender: TObject);
var
the : TLoader;
begin
the := the.Create;
end;
Now, just after the the := the.Create
part, delphi shows the message with 'ok'
and then gives me an error and says Project Project1.exe raised exception class $C0000005 with message 'access violation at 0x0040559d: read of address 0xffffffe4'.
Also it shows this line:
constructor TLoader.Create;
begin
ShowMessage('ok');
end; // <-------- THIS LINE IS MARKED AFTER THE ERROR.
I am new at delphi. I am using Delphi XE2 and i couldnt manage to fix this error. Does anyone show me a path or have solution for this?
Solution 1:
var
the : TLoader;
begin
the := the.Create;
is incorrect. It should be
var
the : TLoader;
begin
the := TLoader.Create;
Solution 2:
You've got the syntax wrong. If you're constructing a new object, you should use the class name, not the variable name, in the constructor call:
procedure TForm1.Button1Click(Sender: TObject);
var
the : TLoader;
begin
the := TLoader.Create;
end;