PDA

Ver la Versión Completa : dll + mostrar formulario


albertoP
03-12-2006, 23:12:42
Hola amigos he estado haciendo pruebas con dll y me he encontrado con un problema:

Tengo una dll que intenta mostrar un formulario que esta dentro de ella, al llamarlo desde la aplicacion me da una error de Violacion de acceso.

El codigo de la dll es:

uses
SysUtils,
Classes,
Windows,
Messages,Dialogs,
Unit1 in 'Unit1.pas' {Form1};

function msg:Boolean;stdcall;
begin

try
form1.Show;
result:=true;
except
showMessage('Error al intantar mostrar el mensaje');
result:=true;
end;


end;

exports msg;

end.

El codigo de la APP es:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
function msg:Boolean; external 'mensaje.dll';

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var a:Boolean;
begin
a:=msg();



end;

end.

Se puede hacer lo que quiero en una dll? Cmo lo haria..

Desde ya muchas gracias.

ElKurgan
04-12-2006, 08:21:20
Por lo que veo, estas intentando mostrar un formulario que aún no ha sido creado. Antes de "Form1.Show" tendrás que crearlo...

Prueba con algo como esto:

function msg:Boolean;stdcall;
begin
form1 := TForm1.Create(nil)
try
try
form1.Show;
result:=true;
except
showMessage('Error al intantar mostrar el mensaje');
result:=true;
end;
finally
form1.free;
end;
end;


Un saludo