Ir para conteúdo
  • Cadastre-se

dev botao

ACBrIBGE - Problema na BuscaPorNome


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 1694 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde pessoal,

Estava fazendo alguns testes com o ACBrIBGE e ao pesquisar a cidade: "Morrinhos" pela BuscaPorNome com o IgnorarCaixaEAcentos = False eram retornadas 3 cidades: Morrinhos/GO; Morrinhos/CE e Morrinhos do Sul/RS.

Quando eu mudava o IgnorarCaixaEAcentos para True e pesquisava: "MORRINHOS" retornavam 2 cidades: Morrinhos/CE e Morrinhos do Sul/RS.

Pesquisando aqui no fórum vi que a codificação do ACBrIBGE.txt poderia interferir no resultado da busca por causa dos acentos, mas não era o caso dessa cidade.

Fui olhar o arquivo vi que ele estava sendo gravado em ANSI, mas com acentuação e sem caracteres estranhos.

Mas a busca pelo nome da cidade em caixa alta não retornava as 3 cidades.

Para resolver o problema e forçar o componente a criar o ACBrIBGE.txt em UTF8 tive que desabilitar um trecho da função UnZipDoc do ACBrIBGE que convertia UTF8 para NativeString.

//  if RespIsUTF8 then
//    Result := UTF8ToNativeString(Resp)
//  else
    Result := String(Resp);

Os testes foram feitos usando o exemplo do ACBrCEP na aba Buscar IGBE.

Luciano Carnaúba

Postado

Daniel, fiz algumas alterações na Unit ACBrIBGE.pas

Ao que parece a propriedade IsUTF8 não estava sendo utilizada.

Utilizei essa propriedade para parametrizar dentro da função UnZipDoc se o arquivo vai ser gravado em UTF-8 ou não.

  if IsUTF8 then                                          
     Result := String(Resp)                               
  else                                                    
     begin                                                
     CT := LowerCase( GetHeaderValue('Content-Type:') );  

     RespIsUTF8 := (pos('utf-8', CT) > 0);                
     if RespIsUTF8 then                                   
        Result := UTF8ToNativeString(Resp)                
     else                                                 
        Result := String(Resp);                           
     end;                                                 

Em anexo a Unit modificada, comentei com o meu nome nas linhas onde mexi ou inseri alguma coisa.

ACBrIBGE.pas

Luciano Carnaúba

  • Fundadores
Postado

O problema não é esse... é na Busca com "bubble sort", de

function TACBrObjectList.FindObject(Item: Pointer; AComparer: TListSortCompare; Nearest: Boolean): Integer;

Já estou subindo um ajuste...

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.

  • Fundadores
  • Solution
Postado

Por favor atualize os fontes, e teste novamente... Commit [r19662]

Citar

-- ACBrBase --
[-] Correção em Busca "bubble sort", de TACBrObjectList.
    Ajuste para localização no menor "Match", exato
    (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.

  • Este tópico foi criado há 1694 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.