Ajuda com chamada de DLL
17/02/2006
0
Help...
bom tenho um exemplo de como chamar essa DLL em VB e precisava fazer o mesmo em Delphi, só q não entendo nada de VB.
abaixo os arquivos q foral usados para a chamada da DLL em VB
TabNcr.vbw
TabNcr = 22, 29, 535, 477, C, 110, 145, 623, 593, C TabPar = 22, 29, 535, 477, C
TabPar.bas
Attribute VB_Name = "TabPar" ´Campos para Linkage de DLL COBOL Type Reg_Tabela Tab_Arquivo As String * 20 Tab_Registros As Integer End Type ´Declaracão Da DLL COBOL Declare Sub DLLNCR Lib "GERANCR.DLL" (Tabela As Reg_Tabela)
TabNcr.frm
Attribute VB_Name = "TabNcr" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Dim Tabela As Reg_Tabela Private Sub BtnDLL_Click() Tabela.Tab_Arquivo = "" Tabela.Tab_Registros = 0 Call DLLNCR(Tabela) TxtArquivo = Tabela.Tab_Arquivo TxtRegistros = Tabela.Tab_Registros End Sub
Como faço isso em Delphi ??????????
Fabiano Góes
Posts
17/02/2006
Rafael Gomes
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function Double (N: Integer): Integer; stdcall; external ´NomedaDLL.DLL´;
17/02/2006
Rafael Gomes
[b][b]function FuncaodaDLL(Parametros): tipodaFuncao; stdcall; external ´GERANCR.DLL´;[/b][/b]
17/02/2006
Fabiano Góes
Porem eu ja usei funções de dll, o meu problema é q precisava entender como foi feito isso em VB (no codigo acima) para fazer o mesmo em Delphi.
A DLL é feita em cobol mais já esta compilada em 32 bits, não sei se isso ajuda
esse programinha em VB funciona perfeitamente com esse codigo acima.
Por favor galera, estou precisando muto dessa ajuda, kd os feras do forum sei q aqui é onde se encontra os melhores programadores Delphi, se eu não conseguir este informação aqui, não encontrarei em lugar nenhum.
17/02/2006
Massuda
type Reg_Tabela = packed record Tab_Arquivo: array[0..19] of Char; Tab_Registros: Integer; end; procedure DLLNCR(var ATabela: Reg_Tabela); stdcall; external ´GERANCR.DLL´; // o equivalente de BtnDLL_Click() seria algo assim... { procedure BtnDLL_Click; begin Tabela.Tab_Arquivo := ""; Tabela.Tab_Registros := 0 ; DLLNCR(Tabela); TxtArquivo := Tabela.Tab_Arquivo; TxtRegistros := Tabela.Tab_Registros; end; }
17/02/2006
Fabiano Góes
só ao sair do programa fica dando erro de referencia de memória:
A instrução no "0x61046d46" fez referência a memória no "0x00000000". A memória pode ser "read"
como corrigir isso ????
desded já agradeço muito !!!!!
17/02/2006
Rafael Gomes
abraços!!!
17/02/2006
Fabiano Góes
Mais e ai galera como evito esta mensagem de referencia de memoria
já tentei :
mais não deu certo.
17/02/2006
Massuda
Sinceramente fiquei surpreso disso funcionar, porque não tenho certeza se...
Type Reg_Tabela Tab_Arquivo As String * 20 ...
type Reg_Tabela = packed record Tab_Arquivo: array[0..19] of Char; ...
17/02/2006
Fabiano Góes
e me ajudou muito ,
vc não tem idéia cara.
Valeu, Valeu, Valeu, Valeu, Valeu, Valeu, Valeu !!!!
Mais não querendo ser chato , porem já sendo(rsrssr)
Se alguem puder me ajudar com o Erro ao sair do programa eu agraço.
A instrução no "0x61046d46" fez referência a memória no "0x00000000". A memória pode ser "read"
17/02/2006
Massuda
Fora isso, não tenho nenhuma outra sugestão.
Clique aqui para fazer login e interagir na Comunidade :)