CRIANDO DLL EM VB PARA USAR COM OUTRA LINGUAGEM
Pessoal,
Gostaria de criar uma dll em vb com alguns métodos para ser usada em outra linguagem, tipo Delphi (Delphi chamando os metodos dessa dll em vb). Queria saber se muda alguma coisa na sua criação? como faço para publicar os métodos? Enfim, fiz aqui uma dll, com os metodos publicos na classe mas acho que te mais coisa à fazer.
Gostaria de criar uma dll em vb com alguns métodos para ser usada em outra linguagem, tipo Delphi (Delphi chamando os metodos dessa dll em vb). Queria saber se muda alguma coisa na sua criação? como faço para publicar os métodos? Enfim, fiz aqui uma dll, com os metodos publicos na classe mas acho que te mais coisa à fazer.
Hmmmm...
Se nao me falha a memoria voce consegue (mas claro, vai bater cabeca) usar um objeto que eh instanciavel por createobject
Aqui se cria uma instancia do word...
Claro que os tipos de dados intercambiados serao uma boa aventura (o que eh uma string para um e outro).
Este exemplo http://www.blong.com/Articles/Automation%20In%20Delphi/Automation.htm fala de Delphi para Delphi mas perceba como eh o processo de uso do produto final (a dll/com object em si).
Se nao me falha a memoria voce consegue (mas claro, vai bater cabeca) usar um objeto que eh instanciavel por createobject
Aqui se cria uma instancia do word...
procedure TForm1.btnStartWordClick(Sender: TObject);
begin
MSWord := CreateOLEObject([ô]Word.Application[ô])
end;
procedure TForm1.btnStopWordClick(Sender: TObject);
begin
MSWord := Unassigned
end;
Claro que os tipos de dados intercambiados serao uma boa aventura (o que eh uma string para um e outro).
Este exemplo http://www.blong.com/Articles/Automation%20In%20Delphi/Automation.htm fala de Delphi para Delphi mas perceba como eh o processo de uso do produto final (a dll/com object em si).
CRIANDO DLL EM VB
1º Clique no menu File --> New Project --> ActiveX DLL
2º Renomei o nome do projeto de Project1 para VB_Delphi
3º Renomei o nome da classe de Class1 para Teste
4º Acrescente no conteudo de Teste o código abaixo:
[txt-color=#0000f0]Public Nome As String
Public Function Soma(Valor1 As Double, Valor2 As Double) As Double
Soma = Valor1 + Valor2
End Function
Private Sub Class_Initialize()
Nome = [Ô]FADSystem[Ô]
End Sub[/txt-color]
5º Clique no menu File --> Save Project As...
6º Clique no menu File --> Make VB_Delphi.Dll
RODANDO DLL CRIADO EM VD NO DELPHI
1º Inclua ComObj na lista uses.
2º Inclua um Button e inclua o código abaixo:
procedure TForm1.Button1Click(Sender: TObject);
[txt-color=#0000f0]var
Obj: OleVariant;
r: Integer;
s: string;[/txt-color]
begin
[txt-color=#0000f0] Obj:= CreateOleObject([ô]VB_Delphi.Teste[ô]);
r:= Obj.Soma(1, 3);
s:= Obj.Nome;
ShowMessage(IntToStr(r)); // saida --> 4
ShowMessage(s); // saida --> FADSystem
Obj:= Unassigned; // Libera objeto[/txt-color]
end;
-----------------------------------------------------------------------
Parece dificil, mas é facim, facim...![](/assets/smile/sml4.gif)
Atenciosamente,
Fabio Araujo Damascena
1º Clique no menu File --> New Project --> ActiveX DLL
2º Renomei o nome do projeto de Project1 para VB_Delphi
3º Renomei o nome da classe de Class1 para Teste
4º Acrescente no conteudo de Teste o código abaixo:
[txt-color=#0000f0]Public Nome As String
Public Function Soma(Valor1 As Double, Valor2 As Double) As Double
Soma = Valor1 + Valor2
End Function
Private Sub Class_Initialize()
Nome = [Ô]FADSystem[Ô]
End Sub[/txt-color]
5º Clique no menu File --> Save Project As...
6º Clique no menu File --> Make VB_Delphi.Dll
RODANDO DLL CRIADO EM VD NO DELPHI
1º Inclua ComObj na lista uses.
2º Inclua um Button e inclua o código abaixo:
procedure TForm1.Button1Click(Sender: TObject);
[txt-color=#0000f0]var
Obj: OleVariant;
r: Integer;
s: string;[/txt-color]
begin
[txt-color=#0000f0] Obj:= CreateOleObject([ô]VB_Delphi.Teste[ô]);
r:= Obj.Soma(1, 3);
s:= Obj.Nome;
ShowMessage(IntToStr(r)); // saida --> 4
ShowMessage(s); // saida --> FADSystem
Obj:= Unassigned; // Libera objeto[/txt-color]
end;
-----------------------------------------------------------------------
Parece dificil, mas é facim, facim...
![](/assets/smile/sml4.gif)
Atenciosamente,
Fabio Araujo Damascena
Tópico encerrado , respostas não são mais permitidas