Jump to content

Pesquisa arquivo txt pascal


sabing

Recommended Posts

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

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 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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.