Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-02-2005
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
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
¿porqué?


Saludos.
__________________
Sonríe. Mañana puede ser peor.
Responder Con Cita
  #2  
Antiguo 15-02-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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

Última edición por Lepe fecha: 15-02-2005 a las 10:57:30.
Responder Con Cita
  #3  
Antiguo 15-02-2005
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
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.
__________________
Sonríe. Mañana puede ser peor.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:11:28.


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
Copyright 1996-2007 Club Delphi