Ir ao conteúdo
  • Cadastre-se

Erro: "Tentativa de escrita em arquivo não aberto com sucesso"


Posts recomendados

Na tentativa de criar um programa para me auxiliar nos estudos, tentei criar algo, como descrito abaixo, porém, ao tentar cadastrar uma matéria, retorna o erro: "Tentativa de escrita em arquivo não aberto com sucesso".

Program ProgramaDeEstudo ;type obras = Record      nome: string;      comprimento: integer;      onde: integer;      classe: string;     end;          soma = Record     paginas: integer;     minutosM: integer;     minutosF: integer;     aret: integer;    end;var opcao: array [1..10] of integer;    obra: array [1..100] of obras;    TXT: text;    i: integer;    tipo: string;    busca: string;    o: integer;    tipoclasse: array [1..4] of integer;    praconta: array [1..100] of real;    contagem: soma;    progresso: soma;    porcentagem:array [1..4] of real;    seila: string;      Beginassign (TXT, 'C:\Users\Allan\Desktop\Programas\pascalzim\Meus\programa novounb\DADOS.TXT');Reset (TXT);textcolor(white);opcao[1] :=1;i := 1;tipoclasse[1] :=0;tipoclasse[2] :=0;tipoclasse[3] :=0;tipoclasse[4] :=0;contagem.paginas := 0;contagem.minutosM := 0;contagem.minutosF := 0;contagem.aret := 0;progresso.paginas := 0;progresso.minutosM := 0;progresso.minutosF := 0;progresso.aret := 0;while opcao[1]<>5 do Begin  writeln('----------------------------------');  writeln('            Bem-Vindo             ');  writeln('   ao programa de acompanhamento  ');  writeln('      de estudos para o PAS       ');  writeln('----------------------------------');  writeln('');  writeln('');  writeln('[1] Cadastrar obra e progresso');  writeln('[2] Atualizar progresso em certa obra');  writeln('[3] Acompanhar progesso por matéria');  writeln('[4] Acompanhar progesso geral');  writeln('[5] Sair');  write('Digite sua opção: ');  readln(opcao[1]);    if (opcao[1]=1) then   Begin     clrscr;    writeln('-------------------------------');    writeln('    Qual o objeto de estudo?   ');    textcolor(green);    writeln('   Todas as letras maiúsculas: ');    write  ('TEXTO, MUSICA, FILME ou ARTEVISUAL');    read(tipo);        if (tipo='TEXTO') then     Begin          clrscr;          Append(TXT);          write('Nome da obra: ');     readln(obra[i].nome);     write('Número de páginas: ');     readln(obra[i].comprimento);     write('Em que página você está? ');     readln(obra[i].onde);          obra[i].classe := 'Texto';          i := i+1;     tipoclasse[1] := tipoclasse[1]+1;     contagem.paginas := contagem.paginas + obra[i].comprimento;     progresso.paginas := progresso.paginas + obra[i].onde;               writeln(TXT, obra[i].nome, obra[i].comprimento, obra[i].onde, obra[i].classe, i, tipoclasse[1], contagem.paginas, progresso.paginas);          Close(TXT);     clrscr;     End;          if (tipo='MUSICA') then     Begin     clrscr;          Append(TXT);          write('Nome da musica: ');     readln(obra[i].nome);     write('Tempo em minutos(Apenas numeros inteiros): ');     readln(obra[i].comprimento);     write('Em que minuto você está? ');     readln(obra[i].onde);          obra[i].classe := 'Musica';          i := i+1;     tipoclasse[2] := tipoclasse[2]+1;     contagem.minutosM := contagem.minutosM + obra[i].comprimento;     progresso.minutosM := progresso.minutosM + obra[i].onde;          writeln(TXT, obra[i].nome, obra[i].comprimento, obra[i].onde, obra[i].classe, i, tipoclasse[2], contagem.minutosM, progresso.minutosM);          Close(TXT);      clrscr;     End;          if (tipo='FILME') then     Begin      clrscr;     Reset (TXT);     Append(TXT);          write('Nome do filme: ');     readln(obra[i].nome);     write('Tempo em minutos(Apenas numeros inteiros): ');     readln(obra[i].comprimento);     write('Em que minuto você está? ');     readln(obra[i].onde);          obra[i].classe := 'Filme';          i := i+1;     tipoclasse[3] := tipoclasse[3]+1;     contagem.minutosf := contagem.minutosf + obra[i].comprimento;     progresso.minutosF := progresso.minutosF + obra[i].onde;            writeln(TXT, obra[i].nome, obra[i].comprimento, obra[i].onde, obra[i].classe, i, tipoclasse[2], contagem.minutosF, progresso.minutosF);          clrscr;     End;          if (tipo='ARTEVISUAL') then     Begin     clrscr;          Append(TXT);               write('Nome da obra ');     readln(obra[i].nome);     obra[i].comprimento := 1;     write('Obra já analisada? Tecle "1" se SIM e "0" se NÃO ');     readln(obra[i].onde);          obra[i].classe := 'ARTEVISUAL';          i := i+1;     tipoclasse[4] := tipoclasse[4]+1;     contagem.aret := contagem.aret + obra[i].comprimento;     progresso.aret := progresso.aret + obra[i].onde;            writeln(TXT, obra[i].nome, obra[i].comprimento, obra[i].onde, obra[i].classe, i, tipoclasse[2], contagem.aret, progresso.aret);          Close(TXT);     clrscr;     End;       End;  if (opcao[1]=2) then   Begin   clrscr;    write('Digite o nome da obra(como ela foi cadastrada): ');    readln(busca);      for o:=1 to i do     Begin      if (busca = obra[o].nome) then       Begin       Append(TXT);               if obra[o].classe='TEXTO' then         Begin          write('Em que página você está agora? ');          readln(obra[o].onde);          writeln(TXT, obra[o].onde);         End;                  if obra[o].classe='MUSICA' then         Begin          write('Em que minuto você está agora? ');          readln(obra[o].onde);          writeln(TXT, obra[o].onde);         End;                  if obra[o].classe='FILME' then         Begin          write('Em que minuto você está agora? ');          readln(obra[o].onde);          writeln(TXT, obra[o].onde);         End;                  if obra[o].classe='ARTEVISUAL' then         Begin          write('Já analisou essa obra? Digite "1" para SIM e "0" para NÃO ');          readln(obra[o].onde);          writeln(TXT, obra[o].onde);         End;        clrscr;         Close(TXT);       End;          End;       End;     if (opcao[1]=4) then   Begin   clrscr;   //porcentagem texto   {    contagem.paginas é numero total de paginas   progresso.paginas é onde estou      (Progresso x 100)/Contagem = porcentagem      praconta[1] := progresso.paginas*100   }    praconta[1] := progresso.paginas*100;    porcentagem[1] := praconta[1]/contagem.paginas;      //porcentagem musica   praconta[2] := progresso.minutosM*100;    porcentagem[2] := praconta[2]/contagem.minutosM;      //porcentagem filme   praconta[3] := progresso.minutosF*100;    porcentagem[3] := praconta[3]/contagem.minutosF;      //porcentagem artes    praconta[4] := progresso.aret*100 ;    porcentagem[4] := praconta[4]/contagem.aret;       writeln('---------------------------------------------');    writeln('               Dados Gerais                  ');    writeln('---------------------------------------------');    writeln('');    writeln('Obras cadastradas: ', i);    writeln('Obras cadastradas em Texto: ', tipoclasse[1]);    writeln('Obras cadastradas em Música: ', tipoclasse[2]);    writeln('Obras cadastradas em Filmes: ', tipoclasse[3]);    writeln('Obras cadastradas em Artes Visuais: ', tipoclasse[4]);    write('Progresso em textos: ', porcentagem[1]:0:2); writeln('%');    write('Progresso em músicas: ', porcentagem[2]:0:2); writeln('%');    write('Progresso em filmes: ', porcentagem[3]:0:2); writeln('%');    write('Progresso em artes visuais: ', porcentagem[4]:0:2); writeln('%');    readln;    clrscr;      End;  if (opcao[1]=3) then   Begin       clrscr;   writeln('----------------------------------------');   writeln('Consulta por matéria');   writeln('----------------------------------------');   writeln('');   write('Qual matéria deseja consultar? ("Texto", "Musica", "Filme" ou "ARTEVISUAL"');   read(seila);      clrscr;      if (seila='Texto') then    Begin     writeln('Obras cadastradas em Texto: ', tipoclasse[1]);     writeln('Total de páginas cadastradas: ', contagem.paginas);     writeln('Páginas lidas: ', progresso.paginas);      write('Progresso em porcentagem: ', porcentagem[1]:0:2); writeln('%');     End;        if (seila='Musica') then    Begin     writeln('Obras cadastradas em Musicas: ', tipoclasse[2]);     writeln('Total de minutos cadastradas: ', contagem.minutosM);     writeln('Minutos ouvidos: ', progresso.minutosM);     write('Progresso em porcentagem: ', porcentagem[2]:0:2); writeln('%');      End;        if (seila='Filme') then    Begin     writeln('Obras cadastradas em Texto: ', tipoclasse[3]);     writeln('Total de páginas cadastradas: ', contagem.minutosF);     writeln('Páginas lidas: ', progresso.minutosF);       write('Progresso em porcentagem: ', porcentagem[3]:0:2); writeln('%');    End;        if (seila='ARTEVISUAL') then    Begin     writeln('Obras cadastradas em Texto: ', tipoclasse[4]);     writeln('Total de páginas cadastradas: ', contagem.aret);     writeln('Páginas lidas: ', progresso.aret);       write('Progresso em porcentagem: ', porcentagem[4]:0:2); writeln('%');    End;      End; End;  End.
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
  • Membro VIP

Olá. Boa tarde.
 
Vamos lá... primeiramente  sobre o erro em si:
 

"Tentativa de escrita em arquivo não aberto com sucesso"."

 

Venha cá... o "com sucesso" foi em relação a "tentativa de escrita" ou "arquivo não aberto"??? para o primeiro caso, OK... parabéns, o computador tentou. Mas provavelmente deve ser o segundo, ou seja, o erro está em "tentar escrever em arquivo que não está aberto (para escrita)".

 

 

 

Logo........ o problema deve estar na "abertura do arquivo para escrita". Provavelmente no "caminho completo" utilizado:

'C:\Users\Allan\Desktop\Programas\pascalzim\Meus\programa novounb\DADOS.TXT'

O computador não tá achando o arquivo!!  (o caminho é inválido ou algo do tipo)

Sugiro que tente usar um "caminho relativo", ex;:
 

'DADOS.TXT'

Algo como:

assign (TXT, 'DADOS.TXT');

Desta forma, a "assinalação" apontará para a pasta onde está o programa*, ou seja, o arquivo deverá estar (ou será criado) na mesma pasta onde está o ".exe" (geralmente onde está o .pas).

 

PS: Pelo que o eu vi, o PascalZim, compilador que provavelmente você está utilizando, cria um arquivo automaticamente... a vantagem é que facilita, mas ao mesmo tempo é ruim, pois meio que deixa o programador sem o controle disso, já que teoricamente ele quem deveria verificar e criar um arquivo novo ou não...
 

No aguardo.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...