PDA

Ver la Versión Completa : Problema con dll


Robert01
07-02-2006, 13:24:34
Tengo problemas al llamar en forma dinámica un procedimiento en una dll hecha en delphi. Adjunto parte del código para la carga estática. He tratado de hacer la carga dinámica siguiendo las instrucciones que dan en el foro pero he obtenido mensajes de error en la línea donde está el procedimiento LUD(A,n,INDX,de);
Gracias si alguien puede darme una pequeña ayuda.


type
float = double;

const
nsize = 1000;

type
VDouble = array of float;
MDouble = array of VDuoble;
VInteger = array of integer;

var
A : MDouble;
Y : MDuoble;
ind : VInteger;
temp0 : VDouble;
A1 : MDouble;
e : VDouble;
d : VDouble;
v : MDouble;

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

var
Form1: TForm1;

procedure lud(a : MDouble; n : integer; var ind : VInteger;
var d : float); stdcall;external 'lu_lib.dll';

implementation
{$R *.dfm}

procedure inv;
Var
i, j, k, n,nrot : integer;
fp1 : textfile;
sum,temp,de : float;
BEGIN
.
.
.
for i:=1 to n do begin
for j:=1 to n do begin
Read(fp1,temp);
A[i,j] := temp;
A1[i,j] := temp;
Y[i,j] := 0.0
end;
Y[i,i] := 1.0;
end;
closefile(fp1);
LUD(A,n,INDX,de);
end;

Neftali [Germán.Estévez]
07-02-2006, 13:43:56
Antes que nada Bienvenido a los foros.
A parte de eso:
(1) Por favor revisa la guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).
(2) Haz una búsqueda en los foros antes de preguntar, seguramente acabarás antes.
http://www.clubdelphi.com/foros/showthread.php?t=27603&highlight=DLL
http://www.clubdelphi.com/foros/showthread.php?t=18718&highlight=DLL
(3) Utiliza TAG's en los mensajes (TAG delphi en la barra de botones del editor).
(4) Una vez escrito el mensaje, puedes revisar los mensajes relacionados que aparecen al pie de ésta página.

Un saludo.

Robert01
07-02-2006, 23:04:34
:) El problema es que al escribir el código para enlace dinámico no había puesto la cláusula stdcall al definir el tipo:


Tludcmp = procedure(a : MDoble; n : integer; var indx : VEntero; var d : float);stdcall;


Disculpen si puse la consulta sin haber hecho una revisión teniendo en cuenta estos pequños detalles.

Gracias por todo