sabing Posted July 2, 2012 at 10:43 PM Report Share #466937 Posted July 2, 2012 at 10:43 PM Procedure Pesquisa; var Texto:Text; Pesquisa:String; Temporario:String; nome:String; Begin Assign(Texto,'Arquivo.txt'); {$i-} Reset(Texto); {$i+} If IOResult = 0 Then Begin Write('Digite a sua pesquisa: '); // imprime a menssagem e fecha a janela do dos Read(Pesquisa); While (not eof(Texto)) do Begin Readln(Texto,Temporario); If Pesquisa = Temporario Then Begin Writeln(Temporario); End Else Begin End; End; Close(Texto); End Else Begin End; End; Eu estou tentando fazer uma pesquisa dentro de arquivo txt e esta acontecendo um erro muito estranho eu estou compilando no free pascal o free pascal compila normal quando eu vou fazer uma pesquisa no arquivo txt ele imprime na tela 'Digite a sua pesquisa:' e fecha sozinha estrando me ajuda ai pessoal minha ideia esta certa? Link to comment Share on other sites More sharing options...
passarito Posted July 3, 2012 at 07:37 AM Report Share #466962 Posted July 3, 2012 at 07:37 AM Bom dia, Experimenta trocar o read por readln na linha onde lês a variável pesquisa: readln(pesquisa); Link to comment Share on other sites More sharing options...
nunopicado Posted July 3, 2012 at 08:44 AM Report Share #466968 Posted July 3, 2012 at 08:44 AM (edited) Tens dados no ficheiro 'Arquivo.txt'? Ao meteres o While sem testar primeiro se o ficheiro tem dados, estás a criar um problem que é, caso não tenha, salta logo fora. Precisas de, antes sequer de fazeres a pergunta ao utilizador, testar se o ficheiro tem alguns dados. Para tal podes por exemplo incluir isto no teu IF: If IOResult = 0 Then if FileSize(Texto)>0 then Begin Metes a linha do meio entre o Then e o Begin. Depois do End respectivo podes criar um Else para este novo IF, algo do tipo: end else Writeln('O ficheiro não tem dados. . .'); Outra coisa. Tens de melhorar e muito a tua indentação vertical. O facto de pores uma linha em branco a cada comando, quase, torna o teu código uma confusão que quase é preciso lê-lo todo para perceber o que queres fazer. Deixa uma linha em branco apenas na separação de blocos de código. Por exemplo, entre o readln (o da pergunta ao utilizador) e o while, podes deixar uma linha em branco, mas entre o while e o begin, não deixes nada, o begin faz parte do while. Edited July 3, 2012 at 08:45 AM by nunopicado "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now