Ver Mensaje Individual
  #1  
Antiguo 09-10-2016
Avatar de cl2raul
cl2raul cl2raul is offline
Miembro
 
Registrado: sep 2008
Ubicación: La Habana, Cuba
Posts: 88
Reputación: 16
cl2raul Va por buen camino
problemas con dll y modulo de datos

hola a todos:
estoy haciendo una dll, la cual contendra funciones y procedimientos para operar con una base de datos SQLite usando FireDAC en un DataModule...
ya he echo dll que contienen formularios, pero no se si el error esta en que el procedimiento q exporto en la dll no tiene acceso al DataModule, les adjunto el mensaje de error...

bueno aqui usaremos este pequeño codigo para que todos estemos sincrinizados y afrentemos el problemas sin tirar piedras a ver si damos a la lata... esta es la dll y como pueden observar esta la unidad uData que es un DataModule.

Código Delphi [-]
library dataLib;

uses
  System.SysUtils, System.StrUtils,
  System.Classes,
  FMX.Graphics,
  uData in 'uData.pas' {DM: TDataModule};

{$R *.res}

procedure conectarDB; stdcall;
begin
  DM.Dconnection.Params.Clear;
  DM.Dconnection.Params.Add('Database='+GetCurrentDir+'\cmodelo.db');
  DM.Dconnection.Params.Add('DriverID=SQLite');
  DM.Dconnection.Connected:=True;
end;

exports
  conectarDB;

begin
  //nada
end.

en el DataModule agregamos los siguentes componentes:

Dconnection: TFDConnection; FDPhysSQLiteDriverLink1:
TFDPhysSQLiteDriverLink;
FDGUIxWaitCursor1: TFDGUIxWaitCursor;

observaran q cuando compilen todo marchara bien, entoces para probar cerramos y hacemos un proyecto nuevo, en mi caso Multi-Device Aplication (FireMonkey HD) y agregamos un botoncito nos queda esto:

Código Delphi [-]
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms;

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

var
  Form1: TForm1;

  procedure conectarDB; stdcall; external 'dataLib.dll' name 'conectarDB';

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
 conectarDB;   
end;

end.

ya tenemos el ejecutable, cerramos y cargamos el proyecto DLL y en el menu Run escojemos Parameters... y buscamos el ejecutable. con esto ya podemos correr la dll y me pueden ayudar, jajaja...
gracias de antemano.
Archivos Adjuntos
Tipo de Archivo: zip dudas_problemas con dll y modulo de datos.zip (24,9 KB, 3 visitas)
Responder Con Cita