Alpha-X 0 Denunciar post Postado Abril 29, 2007 Olá pessoal, tenho um array String e preciso fazer uma busca para encontrar a palavra que seja mais similar a palavra digitada pelo usuário.Tentei algumas funções mas nao consegui o que quero, alguem pode me dar uma sujestão de como resolver isso?[]sAlpha-X Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Abril 29, 2007 Programação > Delphi > Artigos, Dicas, Tutoriais e Materias (Delphi) http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Programação > Delphi Compartilhar este post Link para o post Compartilhar em outros sites
Alpha-X 0 Denunciar post Postado Maio 1, 2007 Obrigado pelatentativa, amigo, mas eu ja usei a pesquisa e nao achei nada relacionado ao assunto no site.O que eu preciso fazer é mais ou menos um interpretador de comandos que verifica se houve um erro de digitação, como ocorre no google (você quis dizer...). Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Maio 2, 2007 O que fiz foi mover seu tópico de uma seção para outra...Coloque o fonte que já tem, podemos lhe ajudar a achar uma melhor solução. Compartilhar este post Link para o post Compartilhar em outros sites
Alpha-X 0 Denunciar post Postado Maio 4, 2007 Eu criei essa função que usa pontos para medir o nivel de semelhança entre os comandos, não está 100%, se alguem tiver uma idéia melhor... function NivelSemelhanca(ComandoA, ComandoB: String): Integer;var Pontos, I, J, LetComandoA, LetComandoB: Integer; Pontuou: Boolean;begin Pontuou := False; Pontos := 0; LetComandoA := Length(ComandoA); LetComandoB := Length(ComandoB); //Fase1 - Verifica as letras iniciais e finais if LetComandoB > 3 then begin if ComandoA[1] = ComandoB[1] then begin Pontos := 15; end else begin if ComandoA[LetComandoA] = ComandoB[LetComandoB] then begin Pontos := 15; end; end; if ComandoA[1] = ComandoB[1] then begin Pontos :=25; end; //Fase2 - verifica letra por letra nas mesmas posições for I := 1 to LetComandoA do begin if ComandoA[I] = ComandoB[I] then begin Pontos := Pontos+1; if Pontuou then begin Pontos := Pontos+15; end; Pontuou := True end else begin Pontuou := False; end; end; //Fase3 - verifica letra por letra variando posições no comandoA J := 1; Pontuou := False; for I := 1 to LetComandoA do begin if ComandoA[J] = ComandoB[I] then begin Pontos := Pontos+1; if Pontuou then begin Pontos := Pontos+15; end; J := J+1; Pontuou := True end else begin Pontuou := False; end; end; //Fase4 - verifica letra por letra variando posições no comandoB J := 1; Pontuou := False; for I := 1 to LetComandoA do begin if ComandoA[I] = ComandoB[J] then begin Pontos := Pontos+1; if Pontuou then begin Pontos := Pontos+15; end; J := J+1; Pontuou := True end else begin Pontuou := False; end; end; end; //retorna a quantidade de pontos, qto mais pontos somados maior o grau de semelhança entre as palavras Result := Pontos;end; Compartilhar este post Link para o post Compartilhar em outros sites