Ver Mensaje Individual
  #3  
Antiguo 20-06-2022
TOLO68 TOLO68 is offline
Miembro
 
Registrado: sep 2016
Posts: 14
Reputación: 0
TOLO68 Va por buen camino
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
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

////// Label1.Caption := Mayusculas('mipalabra');  <---- Aqui da un error en Delphi 7.0 , o no devuelve nada en Lazarus.

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 !!!!!

Última edición por Neftali [Germán.Estévez] fecha: 20-06-2022 a las 16:24:58. Razón: Añadir TAG's al mensaje
Responder Con Cita