Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

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
Postado

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

 

Postado

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:

Postado

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

Postado

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

 

Postado

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

 

Postado

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

 

Postado

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.

Postado

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

Postado

Sim seria muito bom

Como eu disse antes não precisa

de uma nova url

basta apenas passar o endereço separado por /

de uma olhada no exemplo ou acesse o site que indiquei acima

Postado

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

 

Postado

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

Postado

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

 

Postado

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:

 

 

Postado

Ó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

 

Postado

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

 

Postado (editado)

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
Postado

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

 

  • Fundadores
Postado

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.

Postado (editado)

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
  • Fundadores
Postado

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.

Postado

Ó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

 

  • Este tópico foi criado há 4185 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...