Ir ao conteúdo
  • Cadastre-se
Murilo Rocha

Dúvida - Exibição de aquivo em Tela

Recommended Posts

Olá pessoal,

Estou com uma dúvida, como eu faço pra mostrar os dados de um arquivo na tela durante a execução de um programa?

Seguinte, nesse programa aí, eu tenho que informar os preços de cada tipo de cerveja e salvar o registro em um arquivo [Prodecure 3].

Depois já na [Procedure 2], eu tenho que fazer um cadastro dos pedidos, só que eu tenho que exibir o arquivo com os preços na tela, durante a procedure.

Resumindo, consigo gerar o arquivo só que no momento em que devo exibi-lo, o programa fecha.

:confused:

program cervejaria;
uses crt;

// ------------------------------------------- Declarando Registros
//Registro [OPÇÃO 2]
type cadpedido = record
numpedido: string[5];
nomecliente: string[20];
nomevendedor: string[20];
qtdcerveja: record
qtdlatao: integer;
qtdlata: integer;
qtdlatinha: integer;
qtdlongneck: integer
end;
valortotal: real;
situacao: char;
end;

//Registro [OPÇÃO 3]
type precocerveja = record
platao: real;
plata: real;
platinha: real;
plongneck: real;
end;
arquivo = file of precocerveja; //Arquivo do registro [OPÇÃO 3]

// ------------------------------------------ Declarando variáveis
var
opcao: integer;
arq_in, arq_out: arquivo;
reg2: cadpedido;
reg3: precocerveja;
saida: boolean;

// ---------------------------------------------- Procedimentos
//Procedimento [OPÇÃO 2]
procedure cadastrapedido(var n: integer);
begin
writeln('Cadastrando pedidos.');
writeln;
writeln('Digite o numero do pedido:');
readln(reg2.numpedido);
writeln('Informe o nome do cliente:');
readln(reg2.nomecliente);
writeln('Informe o nome do vendedor:');
readln(reg2.nomevendedor);
writeln('Informe a quantidade de cerveja por tipo:');
assign(arq_in,'C:\Users\Murilo\Desktop\pcerveja.arq');
reset(arq_in);
read(arq_in,reg3);
writeln('Latao:');
readln(reg2.qtdcerveja.qtdlatao);
writeln('Lata:');
readln(reg2.qtdcerveja.qtdlata);
writeln('Latinha:');
readln(reg2.qtdcerveja.qtdlatinha);
writeln('Long Neck:');
readln(reg2.qtdcerveja.qtdlongneck);
writeln('Valor total do pedido:');
readln(reg2.valortotal);
writeln('Informe a situacao do pedido: (Atendido = S ou N)');
readln(reg2.situacao);
clrscr;
end;

//Procedimento [OPÇÃO 3]
procedure informapreco(var n: integer);
begin
writeln('Informando precos das cervejas.');
writeln;
writeln('Informe o preco da cerveja tipo latao:');
readln(reg3.platao);
writeln('Informe o preco da cerveja tipo lata:');
readln(reg3.plata);
writeln('Informe o preco da cerveja tipo latinha:');
readln(reg3.platinha);
writeln('Informe o preco da cerveja tipo long neck:');
readln(reg3.plongneck);
write(arq_out,reg3);
close(arq_out);
clrscr;
end;

// -------------------------------------- Programa principal
begin
assign(arq_out,'C:\Users\Murilo\Desktop\pcerveja.arq');
rewrite(arq_out);
saida := false;
while saida = false do
begin
writeln('-------- Cervejaria Pasqual --------');
writeln;
writeln(' Menu principal ');
writeln;
writeln('Escolha uma das opções:');
writeln;
writeln('1 - Cadastrar vendedor;');
writeln('2 - Cadastrar pedidos;');
writeln('3 - Informar precos das cervejas;');
writeln('4 - Consultar situacao do pedido do cliente;');
writeln('5 - Alterar Situacao do pedido;');
writeln('6 - Gerar arquivos com pedidos do mes;');
writeln('7 - Sair;');
writeln;
readln(opcao);
clrscr;

if opcao=2 then
begin
cadastrapedido(opcao);
end
else
if opcao=3 then
begin
informapreco(opcao);
end
else
if opcao=7 then
begin
saida:= true;
end;
end;
readkey;
end.

Espero que me ajudem com uma resposta rápida.

Forte abraço! :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se o programa ja esta pronto. Se estiver você poderia postar ele inteiro e falar melhor o bug q você quer arrumar.

Não entendi muito bem o que você quer , mas quando você quer imprimir o que tem em um arquivo o comando é o seguinte:

procedure imprimir
begin
reset(arquivo)
while not eof(arquivo) do
begin
read(arquivo,cerveja);
writeln('Cerveja',nome.cerveja,'. Preço: ',preco.cerveja);
end;
end;

resumindo o "while not eof(arquivo)" vai lendo registro por registro , e a cada registro que le , imprimi na tela o que voce pedir.

Uma dica , de "close" no arquivo só quando o usuario for sair do programa , pois se você for fazer um trabalho muito extenso você esquecer de abrir o arquivo em uma procedure pode dar bug no seu programa e você ficar louco tentando achar o bug.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui solucionar o problema, não sabia que, para exibir os dados do arquivo tinha que "chamá-lo", usando a mesma estrutura que foi usada na hora de criá-lo.

Segue abaixo o algoritmo:


//Procedimento [Tabela de preços]
procedure tabelapreco;
begin
reset(arq3);
while not eof(arq3) do
begin
read(arq3,reg3);
gotoxy(1,5);write(' ');
gotoxy(1,6);writeln('Tipo');
gotoxy(15,6);write('Preco');
gotoxy(1,8);write('Latao');
gotoxy(15,8);write('RS ',reg3.platao:2:2);
gotoxy(1,9);write('Lata');
gotoxy(15,9);write('RS ',reg3.plata:2:2);
gotoxy(1,10);write('Latinha');
gotoxy(15,10);write('RS ',reg3.platinha:2:2);
gotoxy(1,11);write('LongNeck');
gotoxy(15,11);write('RS ',reg3.plongneck:2:2);
writeln;
end;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×