Ir ao conteúdo
  • Cadastre-se

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


Murilo Rocha

Posts recomendados

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:

Link para o comentário
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.

Link para o comentário
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;

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...