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;
- Seguida de “H” tem o som de “X”. Ex.: Chavier = Xavier;
- 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;
- Seguida de “H” tem o som de “X”. Ex.: Sheila = Xeila;
- 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.
...