Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Procedimento para abrir uma turma ou criá-la caso não exista----------------------------------------------------------------------
- procedure abreOuCriaTurma(var prim,ult,pont:ponteiro);
- (* Procedimento padrão para abrir arquivo existente ou criar arquivo novo. Parâmetros:
- mensagem para o usuário;operação a ou c para abrir ou criar; arquivo não tipado;
- nome externo escolhido pelo usuário *)
- Var
- Resultado: integer; // resultado da busca do arquivo
- atual:ponteiro;
- begin
- new(atual);
- digStr('Informe o nome da turma: ', 10, 2, atual^.nome);
- atual^.proximo:=nil;
- atual^.anterior:=nil;
- if primeiro=nil then prim:=atual
- else
- begin
- ult^.proximo:=atual;
- atual^.anterior:=ultimo;
- end;
- ult:=atual;
- pont:=atual;
- pont^.nome:=pont^.nome+'.dat';
- assign(pont^.arqTurma, pont^.nome);
- {$i-} // para inibir rotina de tratamento de erro
- reset(pont^.arqTurma); // tenta abrir para verificar se já existe
- {$I+}
- resultado := ioresult;
- if resultado <> 0 then
- begin
- writeln('Essa turma não existe.');
- if funConfirmar('Deseja criar uma nova turma com esse nome?')='S' then
- begin
- rewrite(pont^.arqTurma);
- writeln('A turma foi criada com sucesso!');
- writeln(' ');
- end;
- end
- else writeln('A turma foi aberta com sucesso!');
- end;
- //-------------------------------------------------------------------------------------------------------------------------------
- // Procedimento para fechar uma turma, ou seja removê-la da lista de turmas ativas------------------------------------------------
- procedure fechaTurma(var prim,ult:ponteiro);
- var resultado:integer;
- pont:ponteiro;
- begin
- new(pont);
- digStr('Informe o nome da turma: ', 10, 2, pont^.nome);
- pont^.nome:=pont^.nome+'.dat';
- assign(pont^.arqTurma, pont^.nome);
- {$i-}
- close(pont^.arqTurma);
- {$I+}
- resultado := ioresult;
- if resultado <> 0 then writeln('Essa turma não está aberta/não existe !')
- else writeln('A turma foi fechada com sucesso!');
- (* Antes de remover a turma deve-se "conectar" a turma anterior com a próxima para que não se perca a ordem das turmas.
- Devemos considerar todas as possibilidades, a turma designada pode ser a primeira e/ou a última *)
- if pont=prim then
- begin
- if pont=ult then
- begin
- prim:=nil;
- ult:=nil;
- end
- else
- begin
- prim:=pont^.proximo;
- pont:=nil;
- end;
- end
- else
- begin
- if pont=ult then
- begin
- ult:=pont^.anterior;
- pont:=nil;
- end;
- end;
- if (pont<>prim) and (pont<>ult) then
- begin
- pont^.anterior^.proximo:=pont^.proximo;
- pont^.proximo^.anterior:=pont^.anterior;
- pont:=nil;
- end;
- dispose(pont);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement