Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Fundadores
Postado

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.

  • Membros Pro
Postado

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

 

 

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

  • Membros Pro
Postado

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

 

 

  • Membros Pro
Postado
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

 

 

  • Membros Pro
Postado

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

 

 

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

  • Membros Pro
Postado
6 minutos atrás, Daniel Simoes disse:

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

Perfeito. Testado e funcionando 100%.

Obrigado!

  • Curtir 1

Valdir Dill

Rio de Janeiro - RJ

 

 

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

  • 1 mês depois ...
Postado

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

  • Fundadores
Postado

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.

×
×
  • 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...
The popup will be closed in 10 segundos...