Esse artigo faz parte da revista Clube Delphi Edição 82. Clique aqui para ler todos os artigos desta edição

0cm; TEXT-ALIGN: left" align=left>Já o algoritmo Metaphone cria a mesma chave para palavras sonoras similares. Ele é mais preciso do que Soundex porque trabalha com as regras básicas da pronunciação. As chaves Metaphone geradas são de comprimentos variado. O que faremos é adaptar o algoritmo Metaphone para a língua portuguesa.

As regras da nossa função são (quando usarmos o sinal de igualdade significa “tem o som de”):

·         Todos os acentos são substituídos, inclusive a cedilha;

  • As vogais (“A”, “E”, “I”, “O”, e “U”), o “Y” e o “H” são ignorados;
  • “E”, “DA”, “DAS” “DE”, “DI”, “DO” e “DOS” também são ignorados. Ex.: João da Silva = João Silva; Maria do Carmo = Maria Carmo; José Costa e Silva = José Costa Silva;
  • Se houver letras duplicadas, a segunda letra é ignorada. Ex: Elizabette = Elizabete;
  • As consoantes “B”, “D”, “F”, “J”, “K”, “L”, “M”, “N”, “R”, “T”, “V” e “X” são mantidas;
  • A letra “C”:
    • Seguida de “H” tem o som de “X”. Ex.: Chavier = Xavier;
    • Seguida de “A”, “O” ou “U” tem som de “K”. Ex.: Carol = Karol;
    • Seguida de “E” ou “I” tem som de “S”. Ex.: Celina = Selina;
    • Senão é ignorado. Ex: Victor = Vitor;
  • A letra “G” seguida de “E” tem som de “J”, senão é mantida. Ex.: Geraldo = Jeraldo;
  • A letra “P” seguida de “H” tem som de “F”, senão é mantida. Ex: Phelipe = Felipe;
  • A letra “Q” seguida de “U” tem som de “K”, senão é mantida. Ex: Queila = Keila;
  • A letra “S”:
    • Seguida de “H” tem o som de “X”. Ex.: Sheila = Xeila;
    • Entre duas vogais tem o som de “Z”. Ex: Casagrande = Cazagrande;
    • Seguido de vogal, é mantido;
    • Senão é ignorado. Ex.: Marcos = Marco;
  • A letra “W” tem som de “V”. Ex: Walter = Valter;
  • A letra “Z” no final do nome tem som de “S”, senão é mantida. Ex: Luiz = Luis.

 

Como podemos ver, é uma rotina mais trabalhosa que complexa. A função retorna o código PDRSLV tanto para Pedro da Silva como para Pedro Silva.

 

A DLL

No Delphi crie uma nova DLL (File>New>Other>DLL Wizard). Salve tudo em uma nova pasta, dando o nome de “codfon.dpr” para o projeto.

 

E o Kylix?

Você também pode fazer com o Kylix essa rotina. Lembrado que DLL no Linux é SO (Shared Objects), que na prática são a mesma coisa. Tenha cuidado com o nome do projeto, digitando em minúsculas o nome.

 

Crie uma nova unit (File>New Unit) e salve-a com o nome de “untMain.pas”. Vamos agora digitar o código da Listagem 1.

...

Quer ler esse conteúdo completo? Tenha acesso completo