Hola a todos !!!
Neftali, muchas gracias, ya pude solucionarlo lo de Suma y Resta, con un conversor de VB6 a Delphi.
Tu ejemplo lo probe, y no me dejaba compilar, me daba errores al cargar la DLL.
La Dll anterior se llamaba add.dll, aqui es fb_dll.dll, es la misma, solo que añadi las funciones Mayusculas y Minusculas.
La DLL la he creado con freebasic, y este es el codigo de la funciones dentro la DLL, por si sirve de algo.
Las 4 funciones, van bien en Visual Basic 6, VB.Net 2010, SharpDevelop y ThinBasic ( en ThinBasic tengo que declarar las funciones como alias, pero es cosa del compilador, me lo dijo el autor)
Código SQL
[-]------------- Codigo DLL FreeBasic-------------
#include once "windows.bi"
#include once "win/ole2.bi"
EXTERN "windows-ms"
FUNCTION Suma(BYVAL N1 AS Integer, BYVAL N2 AS Integer) AS Integer EXPORT
RETURN N1 + N2
END FUNCTION
FUNCTION Resta(BYVAL N1 AS Integer, BYVAL N2 AS Integer) AS Integer EXPORT
RETURN N1 - N2
END FUNCTION
FUNCTION Mayusculas (BYVAL Texto as zString ptr) AS BSTR EXPORT
DIM res AS BSTR, s AS STRING
s = UCASE(*Texto)
res = SysAllocStringByteLen(STRPTR(s), LEN(s))
RETURN res
END FUNCTION
FUNCTION Minusculas (BYVAL Texto as zString ptr) AS BSTR EXPORT
DIM res AS BSTR, s AS STRING
s = LCASE(*Texto)
res = SysAllocStringByteLen(STRPTR(s), LEN(s))
RETURN res
END FUNCTION
END EXTERN
------------- Fin Codigo DLL -------------
Este es el codigo sacado del conversor de VB6, a Delphi o Lazarus.
Para los numeros me va bien.
Pero vi que no me va bien para los string.....
Código Delphi
[-]-------------Codigo Delphi ---------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
function Suma(N1: Smallint; N2: Smallint): Smallint; stdcall; external 'fb_dll.dll' name 'Suma';
function Resta(N1: Smallint; N2: Smallint): Smallint; stdcall; external 'fb_dll.dll' name 'Resta';
function Mayusculas(Texto: String): String; stdcall; external 'fb_dll.dll' name 'Mayusculas';
type
TForm1 = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption := IntToStr(Suma(10,22)); <---- Esta funcion va OK
end;
end.
-------------Fin Codigo Delphi ---------------
Realmente esta Dll es para usar en VB o Basic, pero si puedo usarla en mas lenguajes, como por ejemplo Delphi, pues mucho mejor.
Gracias a todos y que tengan un buen dia !!!!!!
Saludos !!!!!