Guest - Guilherme - Postado Março 31, 2006 Denunciar Share Postado Março 31, 2006 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 exeomloai digamos que tenham outras linhas tb..ai eu varroo arquivo assim, com a variavel linha declarada é claroAssignFile(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 issoobrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 31, 2006 Denunciar Share Postado Março 31, 2006 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Abril 3, 2006 Denunciar Share Postado Abril 3, 2006 valeu pela resposta cara, acabei de ver, estou sem tempo agora, vou testar ateh amanha ai posto aqui se deu certo ou não.. valeu !! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Abril 7, 2006 Denunciar Share Postado Abril 7, 2006 cara, era bem o que eu queria.. obrigado mesmo! Citar Link para o comentário Compartilhar em outros sites More sharing options...
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
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.