Ir para conteúdo
Fórum Script Brasil
  • 0

Fazer busca em arquivo de Texto (.txt)


Danleonhart

Pergunta

Seguinte:

Preciso fazer uma "varredura" (busca) em um arquivo de texto (.txt), e verificar se determinada palavra existe... se existir me retornar "Positivo" e "pegar" a palavra encontrada (irei carregá-la em uma Label), se não existir retornar "Negativo" e encerrar a Sub.

Estou a tentar com o FSO (FileSystemObject)... será que consigo com ele ?

Aberto a sugestões...de preferência com o proprio FSO ;)

Obrigado !

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Aê Kuroi...

Conseguí fazer com o InStr()... usando o "Do Until" ele retorna até a "Linha" onde está a "Palavra" procurada...só gostaria de deixá-la "selecionada" no TextBox...

Acho que não irei conseguir com o "TextBox", só usando o RichTextBox mesmo :mellow:

Tem alguma idéia de como fazer ?! :unsure:

Link para o comentário
Compartilhar em outros sites

  • 0

pode ser com textbox sim.

basicamente, você vai ter q achar a posicao dessa string dentro do textbox. e ai você tem q encontrar o vbCrLf anterior e o proximo em relacao a posicao da palavra. ai você usa as propriedades .SelStart e .SelLength pra selecionar a linha toda. exemplo:

'Seleciona 20 caracteres a partir da posicao 10 no Text1.
Text1.SelStart = 10
Text1.SelLength = 20[/code]

mas o texto exato q esta no arquivo vai estar carregado na textbox, seria isso?? você quer selecionar só a palavra ou a linha toda??

Link para o comentário
Compartilhar em outros sites

  • 0

É assim...

1-Com o FSO localizo e carrego o arquivo texto (.txt) em um TextBox;

2-Em outro TextBox digito a palavra que estou procurando no arquivo TXT

3-Se a palavra não existir, nada ocorre...mas se existir, a mesma fica selecionada em destaque no TextBox...

Localizar e carregar o arquivo já fiz... já elaborei tambem a função para localizar a palavra...só me falta destacar no TextBox...

Agora tem um detalhe no exemplo que você citou, se a palavra for composta, será que vai funcionar com esta dica do "SelStart & SelLength" ?

:blink:

Link para o comentário
Compartilhar em outros sites

  • 0
Agora tem um detalhe no exemplo que você citou, se a palavra for composta, será que vai funcionar com esta dica do "SelStart & SelLength" ?

palavra composta, você quer dizer, se tiver espaco no meio??

vai funcionar sim.

Localizar e carregar o arquivo já fiz... já elaborei tambem a função para localizar a palavra...só me falta destacar no TextBox...

então você tem q achar a posicao pra colocar no .SelStart. e então no .SelLenght, você passa o Len() da palavra q ele tiver digitado.

bom, se o codigo do txt já foi carregado na memoria (dentro do textbox), o mais logico seria fazer a busca dentro do textbox e não do arquivo texto. bom, seria mais logico, mas acontece q existe um gde problema q se chama "strings no vb". as operacoes com strings no visual basic 6 são muito lentas, basicamente porque todos os parametros para as funcoes de strings (InStr(), Len(), Mid(), etc) são passados por ByVal. o q significa q a string toda é copiada num novo local de memoria.

e se o conteudo do seu arquivo texto for grande, essas buscas podem ficar muito lentas.

quando eu precisei fazer esse codigo de busca q você esta fazendo, eu usei uma funcao em c++ q eu chamava a partir de uma dll. como em c, as strings são passadas por ByRef (ele acessa o parametro direto no endereco da variavel original, sem ter q copia-la totalmente para a memoria -- caso o texto esteja em unicode ai já não tenho certeza de como funciona), a busca ficava muito mais rapida (eu cheguei a testar com txts de 4 megas e não ocorria nenhum delay ou travamento).

mas resumindo, pra localizar o texto direto no textbox, você usaria simplesmente um InStr() no textbox todo e pronto, não precisaria ler no arquivo.

agora caso isso fique muito lento, ler a partir do txt como você já fez (q vai usando InStr() em strings menores), pode ficar muito mais rapido quando a palavra estiver no inicio do arquivo, mas imagino q demore ainda mais quando a palavra estiver mais pro final (ou quando ela não existir).

mas se quiser adaptar o codigo do seu txt, só o q você tem q fazer é, cada vez q não encontrar a palavra numa linha, você soma o Len() dessa linha numa variavel q vai guardar a posicao. e caso você encontre a palavra na linha, você soma a posicao onde ela estava na linha nessa variavel e pronto, você encontrou a posicao onde ela deve estar dentro do textbox.

veja se entendeu. em resumo é simples fazer isso, o problema é q vai ficar muito lento com textos muito grandes.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...