versiones - Delphi: Infracción de acceso al final del constructor Create()
delphi xe2 full (2)
Tengo una clase muy básica y simple como esta:
Cargador de la unidad;
interface
uses
Vcl.Dialogs;
type
TLoader = Class(TObject)
published
constructor Create();
end;
implementation
{ TLoader }
constructor TLoader.Create;
begin
ShowMessage(''ok'');
end;
end.
Y desde Form1 lo llamo así:
procedure TForm1.Button1Click(Sender: TObject);
var
the : TLoader;
begin
the := the.Create;
end;
Ahora, justo después de the the := the.Create
, delphi muestra el mensaje con ''ok''
y luego me da un error y dice Project Project1.exe raised exception class $C0000005 with message ''access violation at 0x0040559d: read of address 0xffffffe4''.
También muestra esta línea:
constructor TLoader.Create;
begin
ShowMessage(''ok'');
end; // <-------- THIS LINE IS MARKED AFTER THE ERROR.
Soy nuevo en Delphi. Estoy usando Delphi XE2 y no pude arreglar este error. ¿Alguien me muestra un camino o tiene una solución para esto?
Tienes la sintaxis incorrecta. Si está construyendo un nuevo objeto, debe usar el nombre de la clase, no el nombre de la variable, en la llamada del constructor:
procedure TForm1.Button1Click(Sender: TObject);
var
the : TLoader;
begin
the := TLoader.Create;
end;
var
the : TLoader;
begin
the := the.Create;
Es incorrecto. Debería ser
var
the : TLoader;
begin
the := TLoader.Create;