Usuário com melhor resposta
DLL no C# para acesso no Delphi 7!

Pergunta
-
Ok, pessoal ja pesquisei um tanto mas nao achei um howto ideal, preciso fazer uma dll em .net c# e acessa-la no delphi.Achei varios exemplos uns diferentes do outro, estou com esse e funciona:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices;namespace DLLTeste{[Guid("7BEC98F1-E4ED-422c-9B59-30B9426E40FE")][InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]public interface IDLLTeste{string teste(string dados);}[Guid("14891E44-155B-4ee3-B50A-6150D2A284AB")][ClassInterface(ClassInterfaceType.None)][ProgId("teste")]public class TesteDLL: IDLLTeste{public string teste(string dados){return dados + " - funfou";}}}Ok, com tipos basicos como string funciona, ja testei com string[] e vai, mas ja com string[][], ja nao rolou.O que eu queria mesmo era receber e enviar objetos do C# la no Delphi, tem como? Tipo crio uma classe com varios atributos, queria usa-la no delphi mas nao sei como fazer, se é que é possivel.Se alguem puder dar um help, ou um tutorial completo, preciso saber tanto como fazer no C#, como acessar no delphi, e da maneira mais clean possivel.Ja trabalhei com delphi, mas ja faz 5 anos que nao mexo, programo java, to começando .net c# agora, resumindo nunca tive que contruir e/ou acessar dll's diretamente.Um exemplo completo seria perfeito.Grato!
Respostas
-
Consegui o que queria fazer, isso me clareou a mente:
http://www.c-sharpcorner.com/UploadFile/yougerthen/510262008060749AM/5.aspx
e isso fechou tudo, apesar dele consumir a dll em VB, o que importava era como era feita:
http://www.c-sharpcorner.com/UploadFile/yougerthen/910262008061425AM/9.aspx- Marcado como Resposta Harley AraujoModerator terça-feira, 26 de outubro de 2010 13:22
-
Frederico,
Verifique os atrbutos ComRegisterFunction e ComUnregisterFunction. Você pode usá-los para indicar os métodos responsáveis em disponibilizar o objeto como se fosse um COM+ Win32.
Tytto- Sugerido como Resposta Tytto sexta-feira, 20 de novembro de 2009 20:38
- Marcado como Resposta Harley AraujoModerator terça-feira, 26 de outubro de 2010 13:22
Todas as Respostas
-
Consegui o que queria fazer, isso me clareou a mente:
http://www.c-sharpcorner.com/UploadFile/yougerthen/510262008060749AM/5.aspx
e isso fechou tudo, apesar dele consumir a dll em VB, o que importava era como era feita:
http://www.c-sharpcorner.com/UploadFile/yougerthen/910262008061425AM/9.aspx- Marcado como Resposta Harley AraujoModerator terça-feira, 26 de outubro de 2010 13:22
-
Olá Frederico,estou com um problema bem semelhante. Eu sou programador, conheço bastante de .net, java e vfp. Recentemente eu criei uma dll em C# e consumo esta usando o progid como referencia. Ex:em VFP:Local loObjeto as ObjectloObjeto = CreateObject('meucomponente.minhaclasse')loObjeto.MeuMetodo()em VBS:Dim loObjetoSet loObjeto = createobject("meucomponente.minhaclasse")loObjeto.MeuMetodo()e por ai vai, bem simples fazer a referencia pelo Progid.mas agora eu preciso consumir essa dll no delphi 7. O que eu tenho que fazer? eu segui esse tutorial e mesmo assim não soube consumir no Delphi. Como que eu consumo no delphi? qual opção dele que eu tenho q usar?alguém sabe me explicar?agradeço qualquer ajuda.
-
Paulo,
Caso ainda não tenha conseguido solucionar o seu problema, segue a resposta.
Para chamar um método em uma DLL COM Interoperável é semelhante a outras linguagens, basta usar a função CreateOleObject
procedure ChamarDLL
var
olObjeto: OleVariant;
begin
olObjeto := CreateOleObject('meucomponente.minhaclasse');
olObjeto.MeuMetodo();
olObjeto := null;
end;
Outra forma de executar uma DLL COM no Delphi é importar (se a mesma permitir) a Type Library desta DLL usando uma ferramenta existente no Delphi. A mesma esta localizada no menu Component->Import Component. Quando a ferramenta for executada, você deve usar a opção "Import a Type Library", selecione o componente COM na lista que será apresentada e siga os próximos passos (são simples). Ao final do processo, será gerada um UNIT contendo as interfaces, métodos, atributos e GUIDs expostos pela DLL COM+ ou COM Interop.
Marcos -
Seguindo o tutorial do link que vc postou funcionou perfeitamente.
Porém o software não vai rodar no meu pc e sim em outro que não tem o Delphi e nem o VS2005 que utilizei.
Como vc fez para distribuir o aplicativo? Onde e Como registrou a DLL criada?
-
Frederico,
Verifique os atrbutos ComRegisterFunction e ComUnregisterFunction. Você pode usá-los para indicar os métodos responsáveis em disponibilizar o objeto como se fosse um COM+ Win32.
Tytto- Sugerido como Resposta Tytto sexta-feira, 20 de novembro de 2009 20:38
- Marcado como Resposta Harley AraujoModerator terça-feira, 26 de outubro de 2010 13:22