Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 25
Crandel Va por buen camino
Cita:
Empezado por Esau
en el evento Close del formulario se destruye
nunca use formularios en dll's pero esto suena muy raro.

no creo que sea correcto destruir el formulario cuando todavia esta en uso.
__________________
[Crandel]
Responder Con Cita
  #2  
Antiguo 01-09-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Cómo destruyes el formulario?

No sé cómo sea con una dll pero recuerda que lo indicado es poner Action := caFree y no Form1.Free.

// Saludos
Responder Con Cita
  #3  
Antiguo 01-09-2005
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 24
Esau Va por buen camino
probe con
Código Delphi [-]
   Action := caFree;
y sigue con el mismo problema...

quizas no debo poner formularios en una DLL, pero que tan cierto es esto...
Responder Con Cita
  #4  
Antiguo 01-09-2005
Avatar de lpmlpm
lpmlpm lpmlpm is offline
Miembro
 
Registrado: ago 2005
Posts: 136
Poder: 21
lpmlpm Va por buen camino
Igual me equivoco, pero yo lo pensaría de este modo:

Estas asignando como responsable de la nueva forma a un objeto Application, pero tratandose de que estas cargando el formulario desde una DLL no se ve bien claro a cual Application es a quien le va a colgar el chamaco este procedimiento... porque no puebas (ya que tu mismo te estas encargando de liberar los recursos de la forma) de crear la forma nueva, digamoslo asi, "huerfana" o dicho de otra manera "autosuficiente"

Código Delphi [-]
 Procedure MostrarForm; StdCall; Export;
 Begin
   Form_Hola := TForm_Hola.Create(nil);
   Form_Hola.Show;
 End

Sustituyendo Application por nil no estas haciendo responsable a nadie por tu formulario, asi que al cerrar tu aplicación no tendría porque respingar...supongo

Saludos
__________________
"Lo mejor de no saber hacer nada es que se tiene mucho tiempo libre."
Responder Con Cita
  #5  
Antiguo 02-09-2005
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 24
Esau Va por buen camino
No tuve suerte con lo que me recomendaste... Pero seguire insistiendo con esa logica, creo que esta por ahi, el truco...
Gracias por contestar...
Responder Con Cita
  #6  
Antiguo 02-09-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola,

Hay algo que no entiendo. Yo realmente no manejo dlls pero recién me hice uno con una función similar y no me muestra ningún error.

¿Cómo realmente exportas la función? Según la ayuda de Delphi, export (sin s final) sólo se usaba en Windows de 16 bits. Yo he exportado la función con:

exports MuestraForm;


¿Y cómo la importas a tu aplicación?

// Saludos
Responder Con Cita
  #7  
Antiguo 02-09-2005
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 24
Esau Va por buen camino
Hola Roman...
Les Contare que partí de Cero, he creado una DLL que crea y muestra un formulario.
Código Delphi [-]
library LaDLL;

uses
  SysUtils,
  Classes,
  FormDLL in 'FormDLL.pas' {Form_FormDLL};

{$R *.res}
Procedure MostrarForm; Stdcall; export;
Begin
  Form_FormDLL := TForm_FormDLL.Create(nil);
  Form_FormDLL.ShowModal;
  Form_FormDll.Hide;
  Form_FormDLL.Free;
End;

Exports
  MostrarForm Name 'MostrarForm';

begin
end.
compilé, y todo bien (Se creo la DLL)
luego he creado una Aplicación, en ella he creado una unidad donde declaro la DLL
Código Delphi [-]
unit Declaraciones;

interface

Procedure MostrarForm; External 'LaDLL.DLL' Name 'MostrarForm';

implementation

end.

y desde el formulario principal hago una llamado a la DLL desde un boton
Código Delphi [-]
implementation

{$R *.dfm}
Uses
  Declaraciones;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MostrarForm;
end;

end.

Parece que los dioses hoy me han dado un manito, y la aplicación no se ha quejado y no hay ningún error, pero he observado algo interesante y me gustaría que me ayuden en la explicación…
La DLL como el ejecutable que se han creado solo pesan 18 y 19 Kb respectivamente…
Me imagino que si llevo la DLL y el Exe a otra maquina me va a pedir algunos DLL…
La pregunta seria ¿Cómo hago para que el Exe solo dependa de la DLL? Y la DLL sea independiente de cualquier otra…
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


La franja horaria es GMT +2. Ahora son las 21:39:20.


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