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

Busca


Guest - Guilherme -

Pergunta

Guest - Guilherme -

Galera... andei fuçando bastante no forum e não achei exatamente o que eu queria, queria realizar uma busca dentro de um arquivo txt, sei ler o arquivo e tals.. mas num consigo fazer uma funcao para busca.. alguém pode me ajudar?

vou exemplificar u q eu quero:

dentro do arquivo texto existe uma linha assim

"Nome: Guilherme Sobrenome: Isidoro..... Idade: cinquenta"

por exeomlo

ai digamos que tenham outras linhas tb..

ai eu varroo arquivo assim, com a variavel linha declarada é claro

AssignFile(ArqTxt,'C:\texto.txt');

Reset(ArqTxt);

while not eof(ArqTxt) do begin

Readln(ArqTxt, Linha);

end;

só q ai euq ero fazer um if embaixo do readln do tipo:

if linha ("contem") 'Sobrenome' then

("copia de sobrenome até isisdoro")

entenderam ? só q eu num sei com ofazer isso

obrigado!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Achei melhor postar uma solução. Em função do formato do seu arquivo, acredito que seja uma solução razoável e você poderá buscar na linha lida qualquer parâmetro desejado:

function RetornaParametro(Texto, Delimitador1, Delimitador2 :string) :string;
var
  PosDelimitador1,
  PosDelimitador2 :Integer;
begin
  PosDelimitador1 := Pos(Delimitador1, Texto);
  if PosDelimitador1 > 0 then  // Se encontrou o delimitador inicial procura pelo final ou fim da linha
  begin
    Inc(PosDelimitador1, Length(Delimitador1));  // Posiciona no início de texto procurado
    PosDelimitador2 := Pos(Delimitador2, Texto);
    if PosDelimitador2 = 0 then  // Se não há o segundo delimitador, retorna até o resto da linha
      PosDelimitador2 := Length(Texto) +1;
    Result := Trim(Copy(Texto, PosDelimitador1, PosDelimitador2 -PosDelimitador1));
  end;
end;

// seu código postado - adaptado
var
  Sobrenome :String;
  ...
begin
  ...
  AssignFile(ArqTxt,'C:\texto.txt');
  Reset(ArqTxt);
  while not eof(ArqTxt) do 
  begin
    Readln(ArqTxt, Linha);
   // exemplo da busca do sobrenome
    Sobrenome := RetornaParametro(Linha, 'Sobrenome:', 'Idade:');
  end;
1) Se não houver uma palavra que delimite o fim da linha, então passe qualquer coisa que não exista para o Delimitador2 (p.ex. ':FIM'); 2) Se os Delimitadores não forem case sensitive, talvez seja mais seguro convertê-los para UppeCase, bem como, converter o Texto com UpperCase:
function RetornaParametro(Texto, Delimitador1, Delimitador2 :string) :string;
...
  PosDelimitador1 := Pos(UpperCase(Delimitador1), UpperCase(Texto));
  if PosDelimitador1 > 0 then  // Se encontrou o delimitador inicial procura pelo final ou fim da linha
  begin
    Inc(PosDelimitador1, Length(Delimitador1));  // Posiciona no início de texto procurado
    PosDelimitador2 := Pos(UpperCase(Delimitador2), UpperCase(Texto));
...

[]s

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...