Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-03-2010
pabloloustau pabloloustau is offline
Miembro
 
Registrado: dic 2009
Posts: 56
Poder: 15
pabloloustau Va por buen camino
carga dinamica de un dllform

hola a todos!
quiero hacer una aplicacion que por medio de un combobox u open file pueda añadir el nombre de librerias y ejecutarlas en el programa.
las librerias son dllform y he intentado hacer algo como esto sin exito:

type
tproc= procedure;
var
handle:thandle;
dllname:string;
proc:tproc;
begin
dllname:= combobox1.Text;
handle:= loadlibrary(pchar(dllname));
proc:= getprocaddress(handle, pchar(ShowDllFormModal));
end;

se que faltan las ecepciones y liberarla de memoria pero el codigo no me funciona a pesar que tengo las dll en la carpeta del ejecutable.
alguien me podria dar una mano por favor, que me re trabe con esto...gracias.
Responder Con Cita
  #2  
Antiguo 10-03-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Así, para empezar, no nos has dicho qué falla. Es decir, no es lo mismo que muestre un error de que no encuentra tal archivo que una violación de segmento o una corrupción de memoria. Mejor que copies el error y lo pongas aquí.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 10-03-2010
pabloloustau pabloloustau is offline
Miembro
 
Registrado: dic 2009
Posts: 56
Poder: 15
pabloloustau Va por buen camino
si tenes razon, disculpame.
no sale ningun error, directamente no pasa nada, no se ejecuta la dllform.
Responder Con Cita
  #4  
Antiguo 10-03-2010
pabloloustau pabloloustau is offline
Miembro
 
Registrado: dic 2009
Posts: 56
Poder: 15
pabloloustau Va por buen camino
perdon aca esta el error:

[DCC Error] Unit8.pas(37): E2003 Undeclared identifier: 'ShowDllFormModal'

como declaro el export showdllformmodal??
Responder Con Cita
  #5  
Antiguo 10-03-2010
pabloloustau pabloloustau is offline
Miembro
 
Registrado: dic 2009
Posts: 56
Poder: 15
pabloloustau Va por buen camino
le declare el ShowDllFormModal como string compilo bien pero cuando selecciono el dll en el combobox y clickeo no pasa nada, no tira ningun cartel de error pero tampoco se ejecuta el dllform


procedure TForm7.Button1Click(Sender: TObject);
type
tproc= procedure;
var
handle:thandle;
dllname:string;
ShowDllFormModal:string;
proc:tproc;
begin
dllname:= combobox1.Text;
handle:= loadlibrary(pchar(dllname));
proc:= getprocaddress(handle, pchar(ShowDllFormModal));
end;
Responder Con Cita
  #6  
Antiguo 10-03-2010
pabloloustau pabloloustau is offline
Miembro
 
Registrado: dic 2009
Posts: 56
Poder: 15
pabloloustau Va por buen camino
perdon por tantos mensajes pero ya tube una solucion aunque con algunos problemitas

type
TProc = procedure;
var
Proc: TProc;
Handle: THandle;
DllName: string;
ShowDllFormModal:string;
begin
DllName:= combobox1.Text;
ShowDllFormModal:= combobox2.Text;
Handle := LoadLibrary(PChar(DllName));
if Handle = 0 then
raise Exception.Create('DLL no encontrada: ' + DllName);
try
Proc := GetProcAddress(Handle, PChar(ShowDllFormModal));
if @Proc = nil then
raise Exception.Create('Función no encontrada: ' +
ShowDllFormModal);
Proc;
finally
FreeLibrary(Handle);
end;
end;


con este codigo puedo ejecutar un dll ingresando el nombre del dll y el nombre de la funcion en un combobox.
en mi caso ejecute un showdllformmodal el problema es que cuando cierro la aplicacion showmodal me salen dos errores:

1- access violation at address 00c8c1130 read of address 00c8c1130
2- el identificador de la ventana no es valido.

como hago para eliminar estos errores???
Responder Con Cita
  #7  
Antiguo 11-03-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Veo que has estado trabajándotelo, eso está bien.

Cita:
Empezado por pabloloustau Ver Mensaje
en mi caso ejecute un showdllformmodal el problema es que cuando cierro la aplicacion showmodal me salen dos errores:

1- access violation at address 00c8c1130 read of address 00c8c1130
2- el identificador de la ventana no es valido.

como hago para eliminar estos errores???
El error 1 indica que estás intentando acceder a una parte de la memoria que no es accesible. Posiblemente el programa está intentando acceder a alguna función o método de la DLL después de que la hayas descargado (eliminado) de la memoria.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Carga dinamica de una dll y Access violation zurech OOP 3 21-02-2011 13:33:14
Carga del servidor CoCaInE SQL 3 29-11-2007 14:17:40
carga dinámica de una libreria en linux Robert01 Lazarus, FreePascal, Kylix, etc. 2 06-10-2007 20:43:15
Carga de Delphi senpiterno Varios 1 21-09-2004 18:45:12
Carga rápida de jpg xflo Gráficos 0 28-07-2004 11:38:38


La franja horaria es GMT +2. Ahora son las 14:37:20.


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