Devido a maior disponibilidade de acesso a internet o Mr. PostMan foi descontinuado e esta em processo de ser substituído pelo PEPBR ( Protocolo de endereçamento Postal Brasileiro) , que pode ser acessado neste endereço: pepbr.com.br.

O Que É DDE?

DDE, ou Dynamic Data Exchange é um protocolo definido pela Microsoft para intercâmbio dinâmico de informações entre aplicativos Windows. Em poucas palavras, duas ou mais aplicações (um Servidor e um ou mais Clientes) conversam entre si através de mensagens padronizadas (WM_DDE_INITIATE, WM_DDE_EXECUTE, WM_DDE_REQUEST, etc). A aplicação servidora cria uma janela escondida, que passa a ser responsável pela conversação com a janela da aplicação cliente. A conversação pode compreender a passagem de parâmetros da aplicação Cliente para o Servidor, execução de comandos no servidor e retorno de informações do Servidor. O padrão é robusto o suficiente para que aplicações Clientes em 16 bits (Windows 3.1) e 32 bits (Windows 95/NT) funcionem exatamente da mesma maneira, usando a mesma aplicação Servidor (Mr. PostMan).

A linguagem BASIC implementada pela Microsoft encapsulou este protocolo dentro de funções, tornando a criação de aplicações clientes DDE algo muito simples. Por exemplo, para fazer com que o Mr. PostMan estabeleça uma conversação com a sua aplicação, basta a seguinte linha (BASIC será usado como linguagem exemplo):

Dim dcl
dcl = DDEInitiate(“MRPOST”, “SCREEN”)

DDEInitiate envia uma mensagem WM_DDE_INITIATE para o Windows (broadcast), procurando por uma aplicação que atenda pelo nome MRPOST e que possua um tópico de conversação SCREEN. Quando o Mr. PostMan receber esta mensagem, um manipulador para a conversação será retornado à aplicação cliente (na variável dcl). De maneira semelhante, para terminar a conversação, basta o seguinte:

DDETerminate dcl

Você pode fazer com que o Mr. PostMan encontre o CEP de um determinado endereço, ou o endereço de um CEP determinado. O mecanismo é mais ou menos o seguinte: envie para o Mr. PostMan as informações que você possui sobre o endereço (ou o CEP do endereço desejado) usando o comando DDEPoke, e execute a função ‘achaCEP‘ ou ‘achaPeloCEP‘ através da função DDEExecute. Por exemplo, para encontrar o CEP de ‘Avenida Paulista, 900‘:

DDEExecute dcl, “[novaPesquisa]”
DDEPoke dcl, “Tipo”, “AV”
DDEPoke dcl, “Logradouro”, “PAULISTA”
DDEPoke dcl, “Numero”, “900”
DDEPoke dcl, “Cidade”, “SAO PAULO”
DDEPoke dcl, “Estado”, “SP”
DDEExecute dcl, “[achaCEP]”

Para encontrar o endereço que corresponde ao CEP ‘01156-000‘:

DDEExecute dcl, “[novaPesquisa]”
DDEPoke dcl, “CEP”, “01156000”
DDEExecute dcl, “[achaPeloCEP]”

O comando novaPesquisa limpa os buffers do Mr. PostMan, assegurando que nada de uma pesquisa anterior possa afetar a pesquisa atual. DDEPoke passa os valores desejados para os buffers do Mr.PostMan, e achaCEP e achaPeloCEP fazem o Mr. PostMan procurar o endereço de acordo com o conteúdo dos buffers. A pesquisa pelo endereço leva em conta o lado (par ou ímpar), faixa de numeração, e CEPs especiais (quando um edifício possui um CEP exclusivo), portanto, quando um CEP ou endereço for encontrado, você poderá ter certeza de que ele é apropriado.

Se o endereço foi encontrado, achaCEP ou achaPeloCEP retornarão sucesso. Para obter o CEP e Bairro do endereço encontrado, basta executar a função DDERequest:

MeuCEP$ = DDERequest(dcl, “voltaCEP”)
MeuBairro$ = DDERequest(dcl, “voltaBairro”)

Se mais de um endereço (ou nenhum) satisfaz o critéiro de seleção, um erro será retornado. É então necessária a intervenção humana para encontrar o endereço correto. Você pode fazer com que o Mr. PostMan apresente seus diálogos de Localidades, Logradouros ou CEPs, posicionado no endereço mais apropriado encontrado a partir dos critérios fornecidos, usando as funções mostraDialogo e mostraDialogoCEP. O operador pode então selecionar da lista o endereço encontrado, inclusive iniciando uma nova pesquisa, ou abandoná-la. Se o operador selecionar uma entrada da lista e clicar OK, o endereço poderá ser retornado para a aplicação através de DDERequest.

A API DDE do Mr. PostMan é descrita a seguir:

TópicoComentários
DDEInitiateInicializa uma conversação DDE com o Mr. PostMan.Retorna o manipulador da conversação, ou 0 em caso de erro.
Comandos Suportados Através de DDEExecute
(Retorna 1 em caso de sucesso, ou 0 em fracasso)
[novaPesquisa]Limpa os buffers do Mr. PostMan, preparando-o para uma nova pesquisa por endereço ou por CEP.
[achaCEP]Acha o CEP correspondente ao endereço passado através de DDEPoke Tipo, Logradouro, Numero, Bairro, Cidade e Estado (Bairro não é obrigatório, todos os outros são)
[achaPeloCEP]Acha o endereço correspondente ao CEP passado através de DDEPoke no Buffer CEP
[mostraDialogo]Se a combinação Cidade/Estado estiver incorreta, ou a cidade não possuir CEPs por ruas, apresenta o diálogo de Localidades, senão apresenta o diálogo de Logradouros da Localidade. O Mr. PostMan sempre estará apontando para o mais próximo possível do passado através de DDEPoke. Se o operador fizer uma seleção e clicar OK, o retorno será 1, caso contrário será 0.
[mostraDialogoCEP]Mostra o diálogo de CEPs apontando para o mais próximo possível do passado através de DDEPoke. Se o operador fizer uma seleção e clicar OK, o retorno será 1, caso contrário será 0.
Buffers Mantidos pelo Mr. PostMan Valorizáveis Através de DDEPoke
(Retorna 1 em caso de sucesso, ou 0 em fracasso)
EstadoContém a porção Estado do endereço sendo passado ou retornado.
CidadeContém a porção Cidade do endereço sendo passado ou retornado.
TipoContém a porção Tipo (R, AV, LG, PC, etc) do endereço sendo passado ou retornado.
LogradouroContém a porção Nome da Rua do endereço sendo passado ou retornado.
NumeroContém a porção Número da Rua do endereço sendo passado ou retornado.
BairroContém a porção Bairro do endereço sendo passado ou retornado.
CEPContém a porção CEP do endereço sendo passado ou retornado.
Valores Retornados pelo Mr. PostMan Através de DDERequest
(Retorna 1 em caso de sucesso, ou 0 em fracasso)
voltaCEPRetorna o armazenado no Buffer CEP na forma 99999999.
voltaCEPHifenRetorna o armazenado no Buffer CEP na forma 99999-999.
voltaEstadoRetorna o armazenado no Buffer Estado
voltaCidadeRetorna o armazenado no Buffer Cidade
voltaBairroRetorna o armazenado no Buffer Bairro
voltaNumeroRetorna o armazenado no Buffer Numero
voltaLogradouroRetorna o armazenado no Buffer Logradouro
voltaTipoRetorna o armazenado no Buffer Tipo
voltaEnderecoRetorna o endereço completo (Tipo + Logradouro + Número)
Exemplo: R SANTA ISABEL 137
voltaTudoRetorna todos os campos separados por uma barra vertical.
Exemplo: R|SANTA ISABEL|137|VL BUARQUE|SAO PAULO|SP
ultimoErroRetorna um texto identificando o resultado da última operação DDE executada.
Exemplo: “Nenhum Erro Encontrado”