CRIANDO DLL EM VB PARA USAR COM OUTRA LINGUAGEM

BRAGA1983 21/08/2009 11:51:18
#320545
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.
WEBMASTER 24/08/2009 12:54:19
#320792
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...

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).
FADSYSTEM 12/02/2010 22:17:56
#334299
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...

Atenciosamente,

Fabio Araujo Damascena
Tópico encerrado , respostas não são mais permitidas