Ir para conteúdo
  • Cadastre-se

dev botao

Incluir Correios Acbrcep


datilas
  • Este tópico foi criado há 3944 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Eu criei uma função para consultar cep direto dos correios se tiver como adaptar ela para o acbrCep seria muito Bom.

caso não tenha como

segue o codigo para quem quiser melhorar e utilzar por favor postem as melhorias para ajudar a todos

function RetiraTag(Texto, AbreTag, FechaTag : String) : String;
var
  PosAbre, PosFecha : Integer;
begin
Result := '';
if (Pos(AbreTag, Texto) <> 0) And (Pos(FechaTag, Texto) <> 0) then
 begin
 PosAbre := Pos(AbreTag, Texto) + Length(AbreTag);
 PosFecha := Pos(FechaTag, Texto);
 Result := Copy(Texto, PosAbre, PosFecha-PosAbre);
 end;
end;

function ConsultaCep(const Cep: String): Boolean;
Var
IdHTTP1: TIdHTTP;
Params,Resposta :TStringList;
RespStream : TStringStream;
Cont,i : integer;
Str : String;
Begin
Result := False;
Try
//http://www.buscacep.correios.com.br/servicos/dnec/consultaLogradouroAction.do?CEP={codigo do cep}&Metodo=listaLogradouro&TipoConsulta=cep&StartRow=1&EndRow=10
Params := TStringList.Create;
Resposta := TStringList.Create;
RespStream := TStringStream.Create('');
IdHTTP1 := TIdHTTP.Create;

Params.Add('CEP='+Cep);
Params.Add('&Metodo=listaLogradouro');
Params.Add('&TipoConsulta=cep');
Params.Add('&StartRow=1');
Params.Add('&EndRow=10');
IdHTTP1.post('http://www.buscacep.correios.com.br/servicos/dnec/consultaLogradouroAction.do?',Params,RespStream);

Resposta.Clear;
Resposta.Text :=  RespStream.DataString;

Logradouro := '';
Bairro := '';
Cidade := '';
Uf := '';
Cont := 0;

for i := 0 to Resposta.Count-1 do
 Begin
 Str := Trim(RetiraTag(Resposta[i],'"padding: 2px">','</td>'));
 if Str <> '' then
  Begin
  Inc(Cont);
  if Cont = 1 then
   Begin
   Logradouro := Str;
   Result := True;
   End;

  if Cont = 2 then
   Begin
   Bairro := Str;
   Result := True;
   End;

  if Cont = 3 then
   Begin
   Cidade := Str;
   Result := True;
   End;

  if Cont = 4 then
   Begin
   Uf := Str;
   Result := True;
   End;
  End;
 End;
Finally
 Begin
 Params.Free;
 Resposta.Free;
 RespStream.Free;
 IdHTTP1.Free;
 End;
End;
End;

Editado por datilas
Link para o comentário
Compartilhar em outros sites

Bom dia, vou analisar o código juntamente com o componente, após dou o retorno, consulta direto dos correios é o mais seguro e a melhor opção, se tudo tiver nos conformes irei implementar e agradecemos sua contribuição.

 

Acompanhe este post.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Bom dia, vou analisar o código juntamente com o componente, após dou o retorno, consulta direto dos correios é o mais seguro e a melhor opção, se tudo tiver nos conformes irei implementar e agradecemos sua contribuição.

 

Acompanhe este post.

ja que voces mostraram interesse nessa consulta resolvi fazer uma mais detalhada, conforme a pagina

http://www.buscacep.correios.com.br/servicos/dnec/menuAction.do?Metodo=menuEndereco

 

consulta por endereco, cep , bairro , os cinco primeiros digitos do cep etc. maiores informações na pagina acima

segue o exemplo em anexo:

Link para o comentário
Compartilhar em outros sites

ja que voces mostraram interesse nessa consulta resolvi fazer uma mais detalhada, conforme a pagina

http://www.buscacep.correios.com.br/servicos/dnec/menuAction.do?Metodo=menuEndereco

 

consulta por endereco, cep , bairro , os cinco primeiros digitos do cep etc. maiores informações na pagina acima

segue o exemplo em anexo:

attachicon.gifcep.zip

 

Efetuei uns testes aqui no exemplo que você enviou, excelente.

 

Meus parabéns.

 

Atenciosamente

------------------------------------------------

Jéter Rabelo Ferreira
Campestre/MG

Link para o comentário
Compartilhar em outros sites

datilas, baixei e temos interesse sim, mas gostaria de lhe pedir para tentar colocar esse demo para funcionar com o TACBrHTTP, esse componente fica na unit ACBrSocket.pas, funcionando com ele, posso add ao componente ACBrCEP.

 

Fico no aguardo.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Excelente, deixa comigo vou implementar seu código no componente ACBrCEP, parabéns será de grande valia, como já falei por ser direto dos correios.

 

Assim que implementar subo e aviso aqui.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

datilas, sua colaboração, implementação e concluída no ACBrCEP, e já disponível no repositório.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

datilas, sua colaboração, implementação e concluída no ACBrCEP, e já disponível no repositório.

eu vi que não existe a BuscarPorLogradouro

ela pode ser efetuada passando passando o nome da rua / bairro / cidade / uf

separados por "/" não necessita preencher todos apenas seguir essa ordem 

e tambem faz busca pelo 5 primeiros digitos do cep Ex: 78075

o que ocorre é que vc esta fazendo: 

ACEP := OnlyNumber( AnsiString( ACEP ) );

impossibilitando

a BuscarPorLogradouro.

 

mas testei a BuscarPorCep e esta funcionando perfeito, 

fico feliz por ter colaborado com um projeto que esta me ajudando muito no desenvolvimento do meu software

muito obrigado pela atenção.

Link para o comentário
Compartilhar em outros sites

eu vi que não existe a BuscarPorLogradouro

ela pode ser efetuada passando passando o nome da rua / bairro / cidade / uf

separados por "/" não necessita preencher todos apenas seguir essa ordem 

e tambem faz busca pelo 5 primeiros digitos do cep Ex: 78075

o que ocorre é que vc esta fazendo: 

ACEP := OnlyNumber( AnsiString( ACEP ) );

impossibilitando

a BuscarPorLogradouro.

 

mas testei a BuscarPorCep e esta funcionando perfeito, 

fico feliz por ter colaborado com um projeto que esta me ajudando muito no desenvolvimento do meu software

muito obrigado pela atenção.

e a mensagem de retorno  (Resultado superior a 100) não é um exception 

é apenas uma advertência pois mesmo com a mensagem ele retorna 100 endereços

Link para o comentário
Compartilhar em outros sites

Bom dia, a linha "ACEP := OnlyNumber( AnsiString( ACEP ) );" não impossibilita a busca por logradouro, pois o método BuscaCep, irá ter somente a função de buscar por CEP.

 

Para fazer a busca por logradouro, terá que ser feito outro método, como o Régys falou.

 

Sobre a msn "Resultado superior a 100", em componentes não existe msn de alerta, tem que ser uma exceção, e não é finalidade do componente retornar a lista de ceps, mas sim os dados de um.

 

Régys o que acha, devemos colocar esses recursos de retorno de vários (lista) para o componente ?

 

pesquisar pelo 5 1o dígitos do CEP pode retornar vários (minha opnião não acho valido)

pesquisar por logradouro pode retornar vários (????)

 

Por logradouro podemos exigir, o máximo de informação para que retorno se possível 1

Por cep, temos ainda que observei que não fiz, exigir os 8 caracteres

 

Opina ai.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

concordo que a busca por cep tem que ser a mais exata possivel,

eu só levantei a questão porque existe essa opção para outros provedores e poderia ser implementada para os correios tambem,

tanto que antes de contribuir com o acbr eu usava a função que coloquei no inicio do tópico que só busca por cep.

e quanto as outras questões eu só quis esclarecer quais as possibilidades que poderiam existir

Link para o comentário
Compartilhar em outros sites

certo, entendi, vou analisar os outros provedores com busca por Logradouro, e vamos analisar as possibilidades, sua contribuição foi implementada as melhorias e novos recursos poderão vir também.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

fiz algumas alterações no wscorreios:

Inclui:

TACBrWSCorreios.BuscarPorLogradouro( AMunicipio, ATipo_Logradouro, ALogradouro,
         AUF, ABairro : String ) ;

 

Alterei:

TACBrWSCorreios.ProcessaResposta;

 

antes a resposta era:

Tipo_Logradouro := '';
Logradouro      := sStr;
 
Agora esta assim:
Tipo_Logradouro := Trim(Copy(sStr,1,Pos(' ',sStr)));
Logradouro      := sStr;
 
segue o arquivo em anexo:

 

 

Link para o comentário
Compartilhar em outros sites

Ótimo, estou baixando para analise e logo subirei para o SVN.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Já disponível no SVN, com um pequeno ajuste. 

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

criei uma unit com as cidades do ibge

e inclui no acbrcep para retornar o codigo do ibge

para todos os provedores que não tinha essa opção

ja corrigi todos os provedores que não tinha essa opção

segue em anexo:

Editado por datilas
Link para o comentário
Compartilhar em outros sites

Vou repassar sua ideia para os demais adms do projeto para analisarmos se é viável usar assim.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Humm.. Não me agrada muito ter uma Unit com tanta String em Hardcoded, muitos usuários tem essa informação em um BD... Isso seria uma fonte constante de modificação...

 

Você poderia modificar seus fontes para usar a consulta do componente ACBrIBGE, logo após a consulta do ACBrCEP... Isso traria a informação direto do site do IBGE

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

então tudo bem.

 

mas eu gostaria de saber se teria como amarrar o acbribge com o acbrcep  igual ao acbrnfe e o acbrdanfe dessa forma a busca seria automática

eu digo isso para facilitar ainda mais o uso do componente (o componente é ótimo),

visto que o código do ibge hoje em dia para nós é uma necessidade

pois eu receberia

ACBrCEP1.Enderecos.municipio

ACBrCEP1.Enderecos.IBGE_Municipio

 

como esta hoje eu receberia

ACBrCEP1.Enderecos.municipio

ACBrIBGE1.Cidades.CodMunicio

 

caso não tenha como fazer tudo bem.

 

(eu ja tentei fazer isso mas eu não tenho experiencia com componentes

e não consegui)

 

gostaria de dizer que os componentes são ótimos uso quase todos

isso não é uma critica, é apenas uma sugestão.

desde ja agradeço a atenção.

Editado por datilas
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Apliquei as seguintes modificações no SVN:
 

 

05/07/2013
-- ACBrCEP -- [*] Melhorado o interpretador de retorno do Correios, Refactoring de rotinas (por: DSA)
[+] Adicionada integração com ACBrIBGE, na consulta dos Correios      (por: DSA) [*] Corrigido problemas na Busca por Logradouro com acentuação        (por: DSA)

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Ótimo, obrigado Daniel pelo retorno e pela força, acredito que seja o melhor provedor para consulta esse dos correios, com essa implementação fica completo.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3944 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...