Ver Mensaje Individual
  #4  
Antiguo 22-01-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Antes de nada respondo a tu pregunta. El access violation te aparece porque delphi inicializa Fglyph a nil, y al intentar accecera a Fglyph.Assign estas traspasando un puntero nulo.

Cita:
Empezado por salvica
constructor Tprueba.create(AOwner: Tcomponent);
begin
Fglyph : Tbitmap.Create;
Fglyph := nil;
En cuanto a la respuesta de salvica, hay un error, supongo que por las prisas, despues de hacer el Tbitmap.create no puedes asignarle nil, estarás dejando en el limbo el bitmap recien creado.

A mi entender, solo deberías crear el Tbitmat cuando lo asignas, no desde la creación del componente.

Código Delphi [-]
en el SetBitmap :

Freeandnil(Fglyph);
Fglyph := Tbitmat.Create(nil);
Fglyph.Assign(Value);
...
en el destroy:

Freeandnil(Fglyph);

Aqui hay varias cosillas a tener en cuenta:

Fglyph delphi lo inicializa a nil, por tanto, la primera vez que asignes un Bitmap, el FreeAndnil no hace nada. La segunda vez que asignes una imagen, primero se libera la imagen anterior con FreeAndNil, despues se crea de nuevo la imagen.

El parámetro que usa en Tbitmap.create(nil) es porque nadie se va a encargar de destruir el Bitmap, pero está controlado en el destroy del componenente, que tambien hacemos un Freeandnil

Saludos
Responder Con Cita