Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-10-2005
Ricardo León Ricardo León is offline
Miembro
 
Registrado: ago 2005
Posts: 41
Poder: 0
Ricardo León Va por buen camino
FreeLibrary

HOLA A TODOS...

ALGUIEN ME PUEDE EXPLICAR PARA QUE SIRVE O COMO FUNCIONA LA FUNCION FreeLibrary ? NO ESTOY SEGURO SI SIRVE PARA DESCARGAR DE MEMORIA CUALQUIER LIBRERIA O SOLO LAS DEL SISTEMA
Responder Con Cita
  #2  
Antiguo 06-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

En la ayuda del SDK de Win32 (disponible desde el menú de ayuda para Delphi) encontrarás la descripción de la función que mencionas. No la transcribiré aquí, porque no es cuestión de un par de líneas. En todo caso no hacía falta que gritaras, que te escuchamos igual. Echa un vistazo a la guía de estilo de los Foros.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 06-10-2005 a las 16:40:16. Razón: Corrección del texto.
Responder Con Cita
  #3  
Antiguo 06-10-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Ricardo León
NO ESTOY SEGURO SI SIRVE PARA DESCARGAR DE MEMORIA CUALQUIER LIBRERIA O SOLO LAS DEL SISTEMA
Antes de nada, lo dicho, revisa la Guía de Estilo.
Como bien apuntas, ésta función permite descargar librerías de memoria.
No tienen que ser necesariamente de sistema, es más, los packages de Delphi (BPL) que son librerías (un poco especiales) se descargan de memoria utilizando UnloadPackage. Éste procedimiento llama (además de hacer alguna otra cosa) a FreeLibrary.

Código Delphi [-]
 procedure UnloadPackage(Module: HMODULE);
 begin
   FinalizePackage(Module);
 {$IFDEF MSWINDOWS}
   FreeLibrary(Module);
 {$ENDIF}
 {$IFDEF LINUX}
   dlclose(Pointer(Module));
   InvalidateModuleCache;
 {$ENDIF}
 end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 06-10-2005
Ricardo León Ricardo León is offline
Miembro
 
Registrado: ago 2005
Posts: 41
Poder: 0
Ricardo León Va por buen camino
Tengo otra duda:

Al utilizar la función FreeLibrary se debe primero hacer el cargue de la dll para obtener su identificador (por decirlo asi) con la función LoadLibrary('dllhost.exe')

Ejemplo:
libreria:= LoadLibrary(ConfigInicial.dll');
FreeLibrary(libreria);

Mi duda es si tengo que indicar la ruta donde se encuentra la dll o no? puesto que esta es una dll de un servicio web que tengo montado en IIS.
Responder Con Cita
  #5  
Antiguo 06-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Tal vez algo así podría ser lo suyo:

Código Delphi [-]
     // unload file (if its loaded) so we can remove all traces
     if (GetModuleHandle(PChar(FileName)) <> 0) then
       FreeLibrary(GetModuleHandle(PChar(FileName)));
Donde "FileName" sería la librería a liberar.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 07-10-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Ricardo León
...Al utilizar la función FreeLibrary se debe primero hacer el cargue de la dll para obtener su identificador (por decirlo asi) con la función LoadLibrary('dllhost.exe')
Más que "cargar" la librería (con LoadLibrary, que la carga en memoria) debes obtener su identificador, como ya te han dicho.
Si dec me permite una pequeña modificación:

Código Delphi [-]
 var
 hDLL: THandle;
 begin
   ...
    // acceder al handle de la librería
   hDLL := GetModuleHandle(aName);
   // la ha encontrado?
   if (hDLL <> 0) then
       FreeLibrary(GetModuleHandle(PChar(FileName)));
    ...

Simplemente para no hacer el GetModuleHandle dos veces.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 07-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por Neftali
Si dec me permite una pequeña modificación:

Código Delphi [-]
 var
   hDLL: THandle;
 begin
   {...}
   // acceder al handle de la librería
   hDLL := GetModuleHandle(aName);
   // la ha encontrado?
   if (hDLL <> 0) then
     FreeLibrary(GetModuleHandle(PChar(FileName)));
   {...}
Yo te permito lo que tú quieras Neftali, ahora bien, ¿cuántos "GetModuleHandle" ves tú en el código de más arriba?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 07-10-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
...Si es que no tengo dedos, tengo MORCILASSSSS!!!!!!!!!!!!
TORPE es poco.....

Código Delphi [-]
  var
 hDLL: THandle;
 begin
   ...
   // acceder al handle de la librería
   hDLL := GetModuleHandle(aName);
   // la ha encontrado?
   if (hDLL <> 0) then
       FreeLibrary(hDLL);
    ...

...
veo 1 (ahora).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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 20:44:43.


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