Jump to content
GOZK

[Ajuda] Erro Append

Recommended Posts

GOZK

Boa Noite,

Tenho um trabalho para a escola e está-me a dar um erro que ando às voltas e não tou a ver o que é,

 Writeln('Quanto ganhou o: ',newplayer,' ?');
 Readln(resultado);
 Writeln('Quanto perdeu o: ',newplayerB,' ?');
 Readln(resultadoB);
 Writeln('-----1');
 ASSIGN(textt,'C:\psc\pes\resultados.txt');
 Writeln('-----2');
 Append(textt);
 Writeln('-----3');
 Writeln(textt,'ola');
 Writeln('-----4');

Os writeln's de "---1" etc era para ver onde dava erro, e ele não chega a dizer o "----3" logo o o erro está no Append,presumo eu, algumas sugestões?

Obrigado,

GOZK

Edited by thoga31
Tags code + GeSHi

“ The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do. “

- Ted Nelson

Share this post


Link to post
Share on other sites
thoga31

Quando fazes append, o ficheiro já existe? É que se não existir, dá um runtime error.


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

Os writeln's de "---1" etc era para ver onde dava erro, e ele não chega a dizer o "----3" logo o o erro está no Append,presumo eu, algumas sugestões?

O ficheiro 'C:\psc\pes\resultados.txt' existe?

Se tentares fazer um append a um ficheiro que não existe, dá erro.


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

Share this post


Link to post
Share on other sites
GOZK

Sim existe, e tem porque eu tenho código atrás que vê o ficheiro e mostra os resultados no ecrã etc.. mas nessa parte dá-me erro.


“ The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do. “

- Ted Nelson

Share this post


Link to post
Share on other sites
nunopicado

Experimenta comentar o Assign.

Se fazes a leitura do ficheiro antes, presumo que já lá tenhas o assign. Só precisas de 1 para cada ficheiro.


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

Share this post


Link to post
Share on other sites
GOZK

Se fizer close antes do Append:

    Writeln('-----1');
    ASSIGN(textt,'C:\psc\pes\resultados.txt');
    Writeln('-----2');
    close(textt);
    Writeln('-----3');
    Append(textt);
    Writeln('-----4');

Mostra o Writeln do 2 , logo dá erro no close.

E se tirar o ASSIGN e o close que adicionei dá o erro 104 que é "File not open for input".

Edited by thoga31
Tags code + GeSHi

“ The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do. “

- Ted Nelson

Share this post


Link to post
Share on other sites
thoga31

Mais um caso em que o pessoal não tem noção do que fazem os procedimentos relacionados com ficheiros.

Retira o assign, deixa o close e deixa o append. Se já fizeste close antes então tira-o.

Pergunta: porque é que eu estou a sugerir isto?

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
GOZK

Obrigado, depois de retirar o assign e deixar o close e o append, o programa lê os meus comentários só que não adiciona o texto, neste caso, 'ola' , ao documento.txt, algumas sugestões?


“ The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do. “

- Ted Nelson

Share this post


Link to post
Share on other sites
thoga31

Tens de mostrar mais código, em especial a parte que faz isso que referes. Não adivinhamos.

E não me respondeste...

Pergunta: porque é que eu estou a sugerir isto?


Knowledge is free!

Share this post


Link to post
Share on other sites
GOZK

Tens de mostrar mais código, em especial a parte que faz isso que referes. Não adivinhamos.

E não me respondeste...

Sugeris-te tirar o Assign porque eu já estava a "chamar" o ficheiro 1 vez, o close foi para fechar o ficheiro porque ele estava a ler (Reset) , penso eu.

Aqui tens a parte do código:

if (resposta = 1) then
 begin
   Writeln('Quem ganhou? [NOME]');
   Readln(respostaA);
       if (respostaA = newplayer) then
          begin
            Writeln('Quanto ganhou o: ',newplayer,' ?');
            Readln(resultado);
            Writeln('Quanto perdeu o: ',newplayerB,' ?');
            Readln(resultadoB);
            close(textt);
            Append(textt);
            Writeln(textt,'asddsaddasdas');
      end;
 end;

Edited by thoga31
Tags code + GeSHi

“ The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do. “

- Ted Nelson

Share this post


Link to post
Share on other sites
thoga31

Vê isto para colocares o código.

Sugeris-te tirar o Assign porque eu já estava a "chamar" o ficheiro 1 vez, o close foi para fechar o ficheiro porque ele estava a ler (Reset) , penso eu.

Exacto. Assim pelo menos certifico-me que entendeste e que não te limitaste a seguir a sugestão sem pensar no porquê. Não é incomum ;)

No código, convém fazeres o close antes, não fica ali bem. Tens a certeza que o programa chega àquela parte do código? Assim de repente não estou a ver nada de mal.

Edited by nunopicado
Correcção tag URL

Knowledge is free!

Share this post


Link to post
Share on other sites
GOZK

Sim, tenho a certeza, a seguinte imagem mostra os writeln's a aparecerem: http://alojamentodeimagens.com/images/629print.png

Também penso que esteja tudo bem, mas devo estar a falhar em algum pormenor.


“ The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do. “

- Ted Nelson

Share this post


Link to post
Share on other sites
thoga31

Que confusão de janela vem a ser aquela? De onde vem aquilo tudo?


Knowledge is free!

Share this post


Link to post
Share on other sites
GOZK

Que confusão de janela vem a ser aquela? De onde vem aquilo tudo?

A confusão é devido eu fazer ALT+F5 no pascal para visualizar o que o programa fez, visto que o programa se eu fizer RUN faz aquilo tudo mas vai abaixo , logo tive de fazer ALT+F5 para ver se ele fez os WriteLn's.

Edited by GOZK

“ The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do. “

- Ted Nelson

Share this post


Link to post
Share on other sites
thoga31

No Pascal? Ou no Notepad++?

Executa normalmente e não com artifícios do Notepad++, e mostra o output. Esses artifícios não trabalham bem com ficheiros.


Knowledge is free!

Share this post


Link to post
Share on other sites
thoga31

Se com o readln naquele ponto não vai abaixo, significa que o problema está depois. Logo, o problema não é desse trecho de código.


Knowledge is free!

Share this post


Link to post
Share on other sites
GOZK

Se com o readln naquele ponto não vai abaixo, significa que o problema está depois. Logo, o problema não é desse trecho de código.

Mas supostamente se não está a dar nenhum problema, podia, escreve no txt.. ele não chega a escrever no txt esse é o meu problema.


“ The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do. “

- Ted Nelson

Share this post


Link to post
Share on other sites
thoga31

Quando executas o programa, tens o ficheiro aberto?

Ele nem sempre grava logo uma vez que é preciso fazer o flush dos dados. Não me lembro bem de como o Pascal faz o flush, mas é possível que naquele momento ele não o escreva.

Tens de mostrar o código todo. Assim nunca mais saímos daqui porque o problema não está aí.


Knowledge is free!

Share this post


Link to post
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.