Ir ao conteúdo

Posts recomendados

Postado

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.
  • 2 semanas depois...
  • Membro VIP
Postado

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.

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!