Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Error al crear una instancia de clase (https://www.clubdelphi.com/foros/showthread.php?t=18516)

jplj 15-02-2005 10:05:48

Error al crear una instancia de clase
 
He creado una clase similar a:

Código Delphi [-]

TUnidad = class(TObject)
private
  FInserccion: Boolean;
  FModif_A: Boolean;
  ...

public
   constructor Create(Owner: TComponent; Id: Integer; Inserccion: Boolean);
   function Save: Boolean;
end;

...

constructor TUnidadACA.Create(Owner: TComponent; Id: Integer; Inserccion: Boolean);
begin
   inherited Create;

   FInserccion:= Inserccion;
   FModif_A:= False;
...
end;

Posteriormente en un formulario en su parte privada he definido una variable de la clase y en una de sus funciones:

Código Delphi [-]
   if Assigned(FUniACA) then FUniACA.Free;

   try
      FUniACA.Create(Self, StrToInt(Id), false);
      ...

Al crear la clase, cuando se produce la asignación:
FInserccion:= Inserccion;
FModif_A:= False;
o cualquier otra se porduce una excepción:

Cita:

Access violation at address 004C0D1E in module "nombre.exe". Wirte of address 00000004
:confused: ¿porqué?


Saludos.

Lepe 15-02-2005 10:52:00

La creación de un objeto siempre es del tipo:

variable := Tipo de datos.Create(parametros)

en tu caso:
Código Delphi [-]
 if Assigned(FUniACA) then Freeandnil(FUniACA); // nos aseguramos de que quede a nil

   try
      FUniACA := TUnidad.Create(Self, StrToInt(Id), false);
      ...

Saludos

jplj 15-02-2005 11:52:07

Cita:

Empezado por Lepe
La creación de un objeto siempre es del tipo:

variable := Tipo de datos.Create(parametros)

Y mi despiste no tiene nombre.

Muchas Gracias.

PD: Algo nuevo si que he aprendido: Freeandnil(). No la conocía.


La franja horaria es GMT +2. Ahora son las 14:18:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi