Ir para conteúdo
  • Cadastre-se

dev botao

ACBrIBGE - Nova versão


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

Recommended Posts

  • Fundadores

As seguintes modificações, foram aplicadas no pacote  ACBrTCP, commit 14753

Citar

-- ACBrIBGE --
[+] Amplo refactoring aplicado, para compatibilizar o ACBrIBGE, com os WebServices
    oficiais.
[-] Propriedade "TACBrIBGECidade.CodMunicio", corrigida para: "TACBrIBGECidade.CodMunicipio"
[+] Adicionada a propriedade "IgnorarCaixaEAcentos", para instruir ao ACBrIBGE,
    se a Busca por Nome do município, deve ignorar Acentos e Caixa Alta/Baixa
[*] Método "BuscarPorNome", teve sua assinatura alterada, removendo o último parâmetro:
    function BuscarPorNome( const ACidade : String; const AUF: String = '';
      const Exata: Boolean = False) : Integer ;
[+] Adicionada mecanismo de Cache, para agilizar as consultas:
    Propriedade CacheArquivo: String default "ACBrIBGE.txt".
                  Arquivo TXT que servirá de cache (memória), para a lista de
                  Cidades já consultadas nos WebServices
                  O uso do cache, economiza consultas HTTP, e acelera o processo de busca.
                  Se valor for Vazio, nenhum cache será efetuado
    Propriedade CacheDiasValidade: Integer default 0
                       Número de dias para considerar o arquivo de Cache ainda
                       válido, até deseprezá-lo e obter novamente a lista de
                       cidades pelos WebServices. Se valor for 0, nunca despreza o cache
    Evento OnGravarCache: procedure(ConteudoCache: TStrings; var Tratado: Boolean) of object;
                          Será chamado sempre que o ACBrIBGE, for efetuar a gravação do Cache
    Evento OnLerCache: procedure(ConteudoCache: TStrings; var Tratado: Boolean) of object;
                       Será chamado sempre que o ACBrIBGE, for carregar o Cache
    Notas: O uso dos eventos de leitura e gravação do Cache, permitem grava-lo em BD ou outro local.
           O Cache será atualizado após a execução de cada chamada aos métodos "ObterCidades"
[+] Adicionada a propriedade: "ListaUFs", que retorna uma Lista de Objetos com
    todas as UFs carregadas no Cache
[+] Adicionada a propriedade: "ListaCidades", que retorna uma Lista de Objetos com
    todas as Cidades carregadas no Cache
[+] Adicionado o método: "ObterUFs", para obter no Cache todas as UFs do Brasil
[+] Adicionado o método: "ObterEstatisticasUF". Para obter no Cache, as informações de
    Área a População de todas as UFs carregadas
[+] Adicionado o método: "ObterCidades". para obter no Cache todas as cidades do
    Brasil.
[+] Adicionado os métodos:
    ObterCidades(const ACodUF: Integer) e ObterCidades(const AUF: String).
    Para obter do Webservice para o Cache, todas as Cidades de uma determinada UF
[+] Adicionado os métodos:
    ObterEstatisticasCidade(const ACodMunicipio: Integer),
    ObterEstatisticasCidadesUF(const ACodUF: Integer),
    ObterEstatisticasCidadesUF(const AUF: String),
    ObterEstatisticasCidades(const ListaMunicipios: String)
    Para obter do Webservice, as estatísticas de Área e População, das Cidades
    carregadas no Cache
[+] Adicionado o método "SalvarCache", para descarregar Cache da memória para o
    disco, chamando o evento OnGravarCache
[+] Adicionado o método "CarregarCache", para Ler do Disco o Cache, para a memória,
    chamando o evento OnLerCache
[+] Adicionado os eventos:
    SalvarCidades(AStream: TStream);
    SalvarCidades(AStringList: TStrings);
    SalvarCidades(AFile: String; Overwrite: Boolean = False);
    Para permitir salvar o conteúdo do Cache em outras ocasiões e locais

-- ACBrCEP, ACBrConsultaCNPJ --
[*] Ajuste após refactoring de ACBrIBGE
    (por: DSA) 

 

  • Curtir 8
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

  • Membros Pro

Bom dia,

Fiz alguns testes e estou tendo um probleminha com a nova opção de cache. Não sei se de repente falta eu configurar/tratar algo...

No primeiro teste, ou seja, quando o arquivo de cache (ACBrIBGE.txt) ainda não existe, consulto cidades (ACBrIBGE1.BuscarPorNome) de mais de uma UF sem fechar a aplicação. Ele vai me trazendo os resultados tudo certinho e também vai incluindo/salvando a lista das cidades de todas as UFs consultadas no arquivo de cache.

Porém, se, ao iniciar uma nova consulta, já existir o ACBrIBGE.txt e, na lista do arquivo não existir a UF que vou consultar, aí dá erro "UF XX não encontrada". 

Obrigado!

Valdir Dill

Rio de Janeiro - RJ

 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores
8 minutos atrás, flexsistemas disse:

Bom dia! 

Muito obrigado Daniel....acabei de testar a alteração. Está retornando o seguinte erro usando o exemplo:

Parece que não conseguiu conectar por HTTPS, o site do IBGE usa TLS1.2... para isso você precisará de OPENSSL superior a 1.0

 

11 minutos atrás, valdirdill disse:

Porém, se, ao iniciar uma nova consulta, já existir o ACBrIBGE.txt e, na lista do arquivo não existir a UF que vou consultar, aí dá erro "UF XX não encontrada

Fecha a aplicação e inicia novamente ?

O "Demo" do ACBrIBGE está dentro do Demo do ACBrCEP... consegue reproduzir com ele ?

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

  • Membros Pro

Obrigado pelo retorno Daniel,

Me desculpe a ignorância, rs...Mas se fosse problema de .dll/TLS, não teria que problema logo na primeira tentativa, ou seja, quando o .txt ainda não existe?

Se não existir arquivo de cache gravado na pasta da aplicação, o problema não ocorre e toda consulta ao WS é feita normalmente, trazendo o retorno da lista completa das cidades UF consultada.

Obrigado.

Valdir Dill

Rio de Janeiro - RJ

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
5 minutos atrás, flexsistemas disse:

Perfeito @Daniel Simoes era isso mesmo!!! Copiei as DLLs de 32bits para a pasta SYSWOW64 e testei novamente tudo certo!! Muito Obrigado.

image.png.1bcd80d0c07eb3a0f8cc2fa5460ed4bc.png

Bom dia,

Nesse exemplo você está apenas consultando a cidade.

Tente fazer assim:

1) Consulte ACBrIBGE1.BuscarPorNome('Petrolina', 'PE', true); //vai dar certo

2) Feche sua aplicação e abra novamente;

3) ACBrIBGE1.BuscarPorNome('Curitiba', 'PR', true); //vai ocorrer erro. Pelo menos aqui ocorre.

Obrigado.

 

Valdir Dill

Rio de Janeiro - RJ

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Vejam a mudança que fiz e aí vai. Não sei se é a melhor forma, mas fica a sugestão. Em negrito as mudanças feitas.

 

procedure TACBrIBGE.ObterUFs(AUF : STring);
begin
  if not fCacheLido then
    CarregarCache;

  if (fListaUFs.Count > 0) then  // Já fez a carga ?
  if fListaUFs.Find(UFToCodUF(AUF)) > 0  then //se a UF sendo consultada está na lista do cache, ou seja, se essa UF já passou por um HTTPGet(CIBGE_URL_UF) anteriormente.
    Exit;

  fListaUFs.Clear;
  HTTPGet(CIBGE_URL_UF);
  fListaUFs.AddFromJSonStr(RespHTTP.Text);
end;

 

Obrigado.

Valdir Dill

Rio de Janeiro - RJ

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
39 minutos atrás, valdirdill disse:

Obrigado pelo retorno Daniel,

Me desculpe a ignorância, rs...Mas se fosse problema de .dll/TLS, não teria que problema logo na primeira tentativa, ou seja, quando o .txt ainda não existe?

Olá valdirdill, você está confundindo os problemas. O que o flexsistemas reportou é outra situação, que não tem nada a ver com o seu problema específico.

Isso costuma acontecer quando todo mundo quer reportar vários problemas num mesmo tópico... Vamos voltar ao seu problema e sugestão:

9 minutos atrás, valdirdill disse:

Vejam a mudança que fiz e aí vai. Não sei se é a melhor forma, mas fica a sugestão. Em negrito as mudanças feitas.

me parece correto, mas você não respondeu o que o Daniel perguntou pra você especificamente:

1 hora atrás, Daniel Simoes disse:

O "Demo" do ACBrIBGE está dentro do Demo do ACBrCEP... consegue reproduzir com ele ?

 

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Fundadores
59 minutos atrás, valdirdill disse:

3) ACBrIBGE1.BuscarPorNome('Curitiba', 'PR', true); //vai ocorrer erro. Pelo menos aqui ocorre.

Apliquei uma possível correção no SVN...

  • Curtir 1
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

  • Fundadores
Agora, flexsistemas disse:

Antes colocava "CAXIAS DO SUL" com RS e ia mas agora tem que ser exatamente como se escreve "Caxias do Sul"

 

15 horas atrás, Daniel Simoes disse:

[+] Adicionada a propriedade "IgnorarCaixaEAcentos", para instruir ao ACBrIBGE,
    se a Busca por Nome do município, deve ignorar Acentos e Caixa Alta/Baixa

 

 

 

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

  • 1 mês depois ...

Boa tarde, com a atualização das DLL's  OpenSSL para 1.0 para o funcionamento dessa nova atualização do ACBrIBGE um componente de terceiro que utilizo parou de funcionar o envio de email, este componente utiliza o Indy 10, sendo assim acredito que ele utilize versões anteriores das DLL's, alguma luz para solucionar este problema ? Se coloca DLL's anteriores para de funcionar o ACBrIBGE.

Ricardo Rodrigues
Analista Desenvolvedor  – Arapongas - PR
+[email protected]
(: (43) 99917-9907

Link para o comentário
Compartilhar em outros sites

  • Fundadores

O correto, é deixar as DLLs, apenas na mesma pasta do .EXE, que faz uso dela... pois esse é o primeiro lugar que o Windows procurará por ela, no momento da carga (dinâmica ou estática)

Essa história de copiar as DLLs para a pasta Windows\System, sempre gera o que chamamos de "DLL Hell"

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

×
×
  • 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.