Ver Mensaje Individual
  #1  
Antiguo 03-11-2010
Suriu Suriu is offline
Miembro
 
Registrado: abr 2007
Posts: 48
Reputación: 0
Suriu Va por buen camino
Question Problema creando una libreria.

Estoy creando una librería la cual el código es parecido a este:

Código Delphi [-]

library Project1;
uses
SysUtils,
Classes,
Dialogs;
{$R *.res}
Type
TModo = (B64);
Function ESum(Datos: String; Value: Word; Modo: TModo): String; stdcall;
begin
case Modo of
B64: Result := 'uses b64';
end;
end;
exports
ESum name 'Do64';
 
begin
end.

Este se compila bien y para la cual e creado una unit de importación la cual uso en el proyecto:

Código Delphi [-]

unit Usescrypt;
interface
type
TModo = (B64);
const
ades = 'Project1.dll';
Type
TEncpt = function(Datos: String; Value: Word; Modo: TModo): String; stdcall;
function Base64(value : string) : string;
implementation
uses
Windows, Dialogs, SysUtils;
var
hencrypt : THandle;
_B64 : TEncpt;
function Base64(value : string) : string;
begin
If Assigned(_B64) then
Result := _B64(value,0,B64)
else
Result := 'No se pudo cargar la funcion';
end;
procedure comprueva;
begin
hencrypt := LoadLibrary(PChar(ades));
if hencrypt = 0 then
ShowMessage('no se pudo cargar la dll project1.dll')
else
@_B64 := GetProcAddress(hencrypt,'Do64');
end;
Initialization
comprueva;
Finalization
FreeLibrary(hencrypt);
end.
 
// application
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Usescrypt;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := Base64(Label1.Caption);
end;
end.

Hasta aquí todo funciona buen pero una vez el programa esta en tiempo de ejecución y después de llamar a la función exportada y que esta devuelve el resultado produce un error antes de finalizar el bloque de código del procedimiento, dicho error lo adjunto.

Les pido me expliquen por que sucede esto, pues e intentado de todo pero no e logrado solucionar el problema. Gracias de antemano por la ayuda…
Archivos Adjuntos
Tipo de Archivo: zip error.zip (8,7 KB, 3 visitas)
Responder Con Cita