João,

Obrigado pela sua atenção. Seguinte, por questão de padronização e de 
documentação de código, estamos querendo usar early-binding, principalmente pq 
a unit gerada pelo Delphi já servirá como documentação e referência para que 
outros desenvolvedores possam incorporar suporte ao Lotus Notes em suas 
soluções.

Bem, fazendo mais e mais testes, o problema ocorria não somente com o método de 
envio de mensagens (método Send() da classe NotesDocument) mas tb quando 
tentava fazer envio de e-mails em formato Rich-Text (método AppendTable() da 
classe NotesRichTextItem). Sempre que usava um destes métodos e preenchia 
parâmetros opcionais ou desnecessários usando a variável global EmptyParam, 
ocorria esse problema (conforme vc suspeitou no início - "Algum variant? Algum 
tipo 'mágico' que permite problemas com tipagem?").

A solução que encontrei foi meio tosca (bem POG), admito, mas funcionou! 
Declarei uma variável do tipo OleVariant e a chamei de MyEmptyParam, e iniciei 
seu conteúdo com a constante EmptyStr, da unit SysUtils. Pra quem não sabe, 
essa constante EmptyStr é simplesmente uma string de tamanho zero (''). Daí, 
então, ao invés de usar EmptyParam, eu uso MyEmptyParam. Agora, tanto 
early-binding como late-binding funcionam normalmente. Por alguma razão, a type 
library do Lotus Notes rejeita/não tolera/recusa/etc. o conteúdo da variável 
EmptyParam definida pelo Delphi. Não se isso acontece na versão que uso no 
trabalho (Delphi 5) ou em qualquer outra versão do Delphi (até a versão 7).

Fica aí o registro aos outros colegas da lista que venham desenvolver 
soluções/aplicações em Delphi e que deverão fazer integração com o Lotus Notes.
Sds.

________________________________

To: delphi-br@yahoogrupos.com.br
From: [EMAIL PROTECTED]
Date: Sat, 8 Mar 2008 14:31:08 -0300
Subject: Re: [delphi-br] Lotus Notes e OLE Automation







Qual a sintaxe do método? Algum variant? Algum tipo 'mágico' que permite
problemas com tipagem? Já tive problemas de outro mundo ao usar
automação com CorelDRAW (late binding), geralmente tipo misturado ou
expressões booleanas sem parênteses suficiente, que não ocasionava erro
de tipo misturado durante a compilação (por seus argumentos serem variant).

Você comentou que late binding funciona. Por quê, então, usar as
interfaces da type library? Performance?

--
Joao Morais

Rubem Nascimento da Rocha wrote:
> Srs.,
>
> Estou tendo a necessidade de fazer o envio de relatórios HTML via cliente do 
> Lotus Notes. Através de late-binding, consigo efetuar o envio, mas devido a 
> uma necessidade de projeto, o programa deve usar early-binding.
>
> Pra quem não sabe, late-binding consiste em usar os objetos de um arquivo 
> .TLB, .OCX ou DLL do tipo COM sem prévio conhecimento de suas interfaces, e 
> fazendo seu acesso por meio de OleVariant. Enquanto isso, early-binding 
> significa que eu faço uso dos objetos de um controle ActiveX(OCX), biblioteca 
> COM(DLL) ou type library(TLB) através de um arquivo que declara instruções 
> explícitas para acessar os objetos e respectivas interfaces. O early-binding 
> é usado, em Delphi, quando efetuamos a importação de uma type library para o 
> projeto (menu Project|Import Type Library) ou quando importamos um controle 
> ActiveX para ser usado em aplicações Delphi (Component|Import ActiveX 
> Control).
>
> Pois bem, criei uma unit para acessar os objetos do Lotus Notes que estão 
> contidos em sua type library notes32.tlb, dessa forma caracterizando o uso de 
> early-binding. Com late-binding, o método de envio de documentos ao Notes 
> funciona normalmente, mas quando uso o mesmo método com early-binding, me 
> ocorre o seguinte erro:
>
> 'problem with input variant'
>
> Estou passando todos os parâmetros necessários, tomando o cuidado de passar o 
> valor EmptyParam para parâmetros opcionais, e mesmo assim estou tendo este 
> erro.
>
> Agradeço a ajuda de algum colega que já trabalhou (ou trabalha) com Automação 
> OLE com early-binding e que possa me dar alguma luz.
>
> Sds.,
> Rubem Rocha
> Manaus, AM









_________________________________________________________________
Receba GRÁTIS as mensagens do Messenger no seu celular quando você estiver 
offline. Conheça  o MSN Mobile!
http://mobile.live.com/signup/signup2.aspx?lc=pt-br

Responder a