Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida ao instanciar um objeto COM de uma dll e implementar o evento d


leonardod

Pergunta

Ola Pessoal

Estou com uma duvida na hora de instanciar um objeto COM em relação a construtor e tambem a associado deste objeto à um evento que o mesmo possui.

Abaixo eu mando o codigo como eu faria em Delphi e da Ok , so que preciso de fazer em delphi, então se alguém puder ajudar. fico grato.

AS DUVIDAS ESTÃO NO CODIGO DO VB ESCRITA EM MAIUSCULO

//CODIGO DELPHI
uses
MinhaDLL_TLB
.
.
public
cli : Cliente
prod : Produto

//evento click
procedure TForm1.Button1Click(Sender: TObject);
begin
    //instanciando um cliente
    cli := Cliente.Create
    //instanciando um produto - aqui eu tenho obrigatoriamente que passar parametro
    prod := Produto.Create(NIL)
    //declarando o evento\listener que vai ficar ouvindo quando o produto for leiloado.
    prod.OnBuy := Leiloado
    
end;

// evento que fecha a negociacao quando o produto é leiloado
procedure TForm1.Leiloado(ASender: TObject; const msg: WideString);
begin

    Button1.Enable := false

end;
Bom para eu usar esse objeto COM em VB eu tenho que adicionar referência beleza,isso foi feito
//CODIGO VB
declarar a variavel em VB fica assim, pelo menos do que eu entendi
e tb fiz e não deu nenhum erro

Dim cli As MinhaDLL.Cliente
//ESSA VARIAVEL FOI DECLARADA ASSIM PORQUE ELA POSSUI EVENTOS
//CERTO ?
Dim WithEvents pro As MinhaDLL.Produto

Evento do click do botão

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

//instanciando o cliente
cli = CreateObject("MinhaDLL.Cliente")
//NÃO ESTOU CONSEGUINDO INSTANCIAR O PRODUTO ACHO QUE É POR CAUSA DO PARAMETRO OBRIGATORIO 
QUE NÃO SEI COMO PASSAR
//NÃO DA CERTO, DA ERRO
pro = CreateObject("MinhaDLL.Produto")

//DO QUE ENTENDI, QUANDO UMA VARIAVEL TEM EVENTOS DEVE SE COLOCAR O NOME DELA SEGUIDO DE "_" MAIS O NOME DO EVENTO
Public Sub pro_Leiloado()
    tbConectado.Text = "Leiloado"
End Sub

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
tenta:

Set pro = New MinhaDLL.Produto
qual a mensagem do erro??
Se eu colocar tanto da forma como você disse
Set pro = New MinhaDLL.Produto
quanto
Set pro = CreateObject("MinhaDLL.Produto"

aparece os erros

DAX Error

Acesss violation at address 062B9A06 in module 'MinhaDL~1.dll.

Read of address 00000020

Em seguida na mesma linha

Erro em tempo de execução '-2147418113 (8000ffff)

Erro de automação

Falha catastrófica

E eu não entendo, porque se fosse erro na DLL em delphi teria que apresentar

algum erro e não apresenta. Em delphi funciona que é uma beleza

Link para o comentário
Compartilhar em outros sites

  • 0
//instanciando um produto - aqui eu tenho obrigatoriamente que passar parametro

prod := Produto.Create(NIL)

tava reparando aqui onde você passa um parametro. não entendo muito de delphi mas acho q esse NIL significa vazio certo?? ou seja você passa o valor mas no fundo não passa parametro nenhum certo?? porque isso acontece??

bom, mas reparei tb q isso ai q você ta usando é visual basic .net, q não tem relacao com essa sala aqui, então to movendo pro local correto.

Link para o comentário
Compartilhar em outros sites

  • 0
//instanciando um produto - aqui eu tenho obrigatoriamente que passar parametro

prod := Produto.Create(NIL)

tava reparando aqui onde você passa um parametro. não entendo muito de delphi mas acho q esse NIL significa vazio certo?? ou seja você passa o valor mas no fundo não passa parametro nenhum certo?? porque isso acontece??

bom, mas reparei tb q isso ai q você ta usando é visual basic .net, q não tem relacao com essa sala aqui, então to movendo pro local correto.

Bom, eu estou programando e dentro do excel 2007. Não sei ao certo se ele usa é realmente o VB .net

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...