Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-03-2008
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.490
Poder: 21
MAXIUM Va camino a la fama
Question Duda con DeleteObject

Tengo la siguiente duda:

Creando un archivo de recursos en el que uno de ellos es un bitmap con nombre ClubDelphi.

Código Delphi [-]
var
    FBitmap: HBITMAP;
begin
       FBitmap:= LoadBitmap(hinstance, 'ClubDelphi');
    // Hago algo y luego libero el recurso.
       DeleteObject(FBitmap);
end;

Ahora todo OK, la duda es si al usar el siguiente código debo liberar algo usando DeleteObject o el mismo EXE libera el recurso del compente Image

Código Delphi [-]
begin
       Image1.Picture.Bitmap.Handle:= LoadBitmap(HInstance, 'ClubDelphi');
    // ¿Estara esto de más?  DeleteObject(HInstance);
end;
Responder Con Cita
  #2  
Antiguo 24-03-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola MAXIUM, sobre los objetos que te creas una vez que los termines de utilizarlos debes liberarlos.

Código Delphi [-]
   try
     FBitmap:= LoadBitmap(hinstance, 'ClubDelphi');
     // Hago algo y luego libero el recurso.
   finally
     FBitmap.Free;
   end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 24-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Creo que la pregunta de Maxium va encaminada a saber si al liberar el objeto (método Free) también se libera el handle que devuelve Windows en la función LoadBitmap.

Digamos que uno está acostumbrado a la comodidad de la VCL sin recurrir a llamadas a la API de Windows (como lo es LoadBitmap) y es natural que uno se desconcierte al usarlas, sobre todo si tenemos en cuenta el tajante texto de la ayuda del SDK de Windows:

Cita:
The application must call the DeleteObject function to delete each bitmap handle returned by the LoadBitmap function
Pero, es bueno recordar también que la VCL hace un gran trabajo para protegernos de estos detalles.

Hay que recordar que una propiedad como Bitmap.Handle, no es una variable cualquiera, y la asignación de un valor a ella, pasa por un método (SetHandle) que, entre otras cosas, se encargará de aplicar el DeleteObject al handle anterior, en caso de que ya hubiera uno asignado. Y, al liberarse el objeto, el destructor se encargará igualmente de aplicar DeleteObject cuando sea necesario.

En resumen, no es necesario aplicar DeleteObject uno mismo, pues la VCL se encarga de ello, pero, claro está, como dice Caro, es indisplensable liberar el objeto Bitmap con Free.

Bye
Responder Con Cita
  #4  
Antiguo 24-03-2008
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.490
Poder: 21
MAXIUM Va camino a la fama
Excelente respuesta, muchas gracias las cosas me han quedado claras.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
una duda alba13 OOP 2 06-11-2007 12:11:06
Una Duda sdiaz1983 Varios 4 22-09-2007 16:39:40
Duda fenther Varios 4 17-04-2007 20:01:45
DeleteObject taita API de Windows 1 26-09-2005 06:18:12
Una duda condor Varios 8 02-06-2004 05:33:56


La franja horaria es GMT +2. Ahora son las 23:43:15.


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