Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   FreeLibrary (https://www.clubdelphi.com/foros/showthread.php?t=25881)

Ricardo León 06-10-2005 16:35:22

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

dec 06-10-2005 16:39:37

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. ;)

Neftali [Germán.Estévez] 06-10-2005 17:02:46

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;

Ricardo León 06-10-2005 18:24:40

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.

dec 06-10-2005 18:31:02

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.

Neftali [Germán.Estévez] 07-10-2005 10:19:02

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.

dec 07-10-2005 12:06:02

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? :D

Neftali [Germán.Estévez] 07-10-2005 12:20:23

...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). :D:D:D


La franja horaria es GMT +2. Ahora son las 04:23:00.

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