FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . Nós temos 759.310 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.

Resposta
 
Opções do Tópico
Antigo 25-05-2005, 14:46   #1 (permalink)
oninja
Newbie
 
Registrado em: Oct 2004
Mensagens: 11
Reputação: 0 oninja está indo no caminho certo
Padrão Dúvida no pascal

olha só, eu tenho um registro ja gravado de uma matricula, sexo, fone e email em pascal...aí, eu tenho q fazer o seguinte esquema: pedir pro kra falar a matricula(até aí blz), aí, se existir a matricula, ele listar os demais campos e poder modificá-los...sabem como fazer isso?

Agradeço desde já.
oninja está offline   Responder com Quote
Antigo 25-05-2005, 17:13   #2 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

Primeiro vc tem que responder outras duas perguntas: gravado como, e onde ??? A partir daí, se vê a resposta.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Antigo 25-05-2005, 17:44   #3 (permalink)
Trakinas
Super Participante
 
Registrado em: Feb 2004
Localização: Juiz de Fora
Mensagens: 451
Reputação: 17 Trakinas está indo no caminho certo
Enviar mensagem via ICQ para Trakinas Enviar mensagem via AIM para Trakinas Enviar mensagem via Yahoo para Trakinas
Padrão

Citação:
Postado Originalmente por jqueiroz
Primeiro vc tem que responder outras duas perguntas: gravado como, e onde ??? A partir daí, se vê a resposta.
gravado num arquivo registro.arq, por exemplo. Como assim como?

aqui vai o código de gravação, de qualquer forma...

Código:
program trab_est; uses crt; type registro = record matricula: string [10]; nome : string [30]; endereco : string [40]; sexo : string [1]; fone : string [15]; end; arquivo = file of registro; var trabalho , trabalho2: arquivo; reg: registro; flag : string; begin assign (trabalho,'trabalho.arq'); rewrite (trabalho); writeln ('Informe Matricula:'); readln (reg.matricula); while reg.matricula <> '-1' do begin write ('Informe Nome:'); readln (reg.nome); write ('Informe Endereco:'); readln (reg.endereco); write ('Informe Sexo:'); readln (reg.sexo); if (reg.sexo <> 'f' ) and (reg.sexo <> 'm') then begin writeln ('Valor Invalido. Favor digitar um valor valido (f ou m).'); readln(reg.sexo); end; writeln ('Informe Fone:'); readln (reg.fone); writeln ('Informe nova Matricula:'); readln (reg.matricula); write(trabalho,reg); {grava registro após o último registro do arquivo} readln(reg.matricula); end; close(trabalho); end.
só pra constar, eu sou do mesmo grupo de trabalho do que oninja.

heehhe
Trakinas está offline   Responder com Quote
Antigo 25-05-2005, 19:13   #4 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

O-queijo.

Então é um arquivo estruturado (ai, que emoção, tinha anos que eu não via um destes :mrgreen: ). Então, a primeira providência pra ler, é copiar a descrição da estrutura. Preste atenção na hora de abrir pra leitura: o comando é diferente do usado pra abrir pra escrita.

Abrir o arquivo e encontrar os dados é relativamente simples; um while e dois ou três ifs resolvem. Mas vc vai precisar pensar um pouquinho pra alterar o arquivo.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Antigo 25-05-2005, 23:54   #5 (permalink)
PajoneiS
Veterano
 
Avatar de PajoneiS
 
Registrado em: Feb 2002
Localização: Pajolandia
Mensagens: 1.363
Reputação: 22 PajoneiS está indo no caminho certo
Padrão

pq vcs nao usam procedures ? fica uma procedure para cada função... fica facil e mais pratico veja abaixo...

vo posta aqui um programa que fiz esses dias (tb to pagando pascal).

Código:
program loja; uses crt; type registro=record nome:string; cod,quant:integer; end; mat=array[1..40] of registro; var arq:file of registro; reg:registro; ch:char; p:mat; {Procedure que faz o cadastro} procedure cad(a:registro); var codc:char; regcod,axou:integer; xcod:integer; b:registro; begin axou:=0; writeln('Deseja cadastrar o produto? (S/N):'); readln(codc); if (codc='s') or (codc='S') then begin {seek(arq,filesize(arq));} writeln('Digite o codigo do produto:'); readln(xcod); while not eof(arq) do begin read(arq,b); if b.cod = xcod then axou:=1; end; if axou = 1 then begin writeln('Produto ja cadastrado!!!'); readkey; end else begin seek(arq,filepos(arq)-1); reg.cod:=xcod; writeln('Digite o nome do produto'); readln(reg.nome); writeln('Digite a quantidade do produto'); readln(reg.quant); write(arq,reg); end; end; end; {Procedure que lista o conteudo do arquivo} procedure listar(a:registro); var codl:integer; begin writeln('Escolha uma opcao para listagem:'); writeln('1 - Listar todos os produtos'); writeln('2 - listar produtos com mais de 10 unidades'); readln(codl); if codl=1 then begin while not eof(arq) do begin read(arq,a); writeln(a.cod,' ',a.nome,' ',a.quant); end; end; if codl=2 then begin while not eof(arq) do begin read(arq,a); if a.quant > 10 then writeln(a.cod,' ',a.nome,' ',a.quant); end; end; readkey; end; {Procedure que procura o nome desejado} procedure procura(a:registro); var codigo,cod2:integer; xnome:string; begin writeln('Deseja pesquisar pelo (1) Codigo ou (2) Nome:'); readln(codigo); if codigo=1 then begin writeln('Informe o codigo:'); readln(cod2); while not eof(arq) do begin read(arq,a); if a.cod=codigo then writeln(a.cod,' ',a.nome,' ',a.quant) end; end; if codigo=2 then begin writeln('Informe o nome:'); readln; readln(xnome); while not eof(arq) do begin read(arq,a); if a.nome=xnome then writeln(a.cod,' ',a.nome) end; end; readkey; end; {Procedura que altera o nome a paritir de um nome ja existente} procedure alterar(a:registro); var ynome:string; begin writeln('Digite o nome que deseja alterar:'); readln(ynome); while not eof(arq) do begin read(arq,a); if a.nome=ynome then begin writeln('Digite o novo nome:'); readln(a.nome); seek(arq,filepos(arq)-1); write(arq,a); end; end; end; {Procedure que ordena em ordem alfabetica} procedure ordenar(b:mat); var i,j,k:integer; aux:registro; begin i:=1; while not eof(arq) do begin read(arq,b[i]); i:=i+1; end; for j:=1 to i-1 do for k:=j+1 to i do if b[j].nome > b[k].nome then begin aux:=b[j]; b[j]:=b[k]; b[k]:=aux; end; for j:=1 to i do writeln(b[j].nome,' - ',b[j].cod); readkey; end; {Inicio do programa principal} begin repeat clrscr; gotoxy(1,1); writeln('Digite opcao:'); gotoxy(3,3); writeln('1 - Cadastrar Produtos'); gotoxy(3,4); writeln('2 - Listar Produtos'); gotoxy(3,5); writeln('3 - Pesquisar Produtos'); gotoxy(3,6); writeln('4 - Alterar Produtos'); gotoxy(3,7); writeln('5 - Ordenar Produtos'); gotoxy(3,8); writeln('0 - Sair'); assign(arq,'c:\temp\dbp.dat'); {$i-} reset(arq); {$i+} if ioresult<>0 then rewrite(arq); gotoxy(14,1); ch:=readkey; case ch of '1':cad(reg); '2':listar(reg); '3':procura(reg); '4':alterar(reg); '5':ordenar(p); end; until ch='0'; end.

Eu prefiro fazer esse programas maiores tudo na base do procedure e function, pra faciliar a vida depois...

Com esse exemplo ai de cima, vc pode fazer o que vc precisa, se ficou alguma duvida é só daum toque... Não sou expert no ramo, mesmo pq como vcs eu estou vendo pascal agora.. mas sempre tive gosto pela area, e to curtindo paca.... :wink:
__________________
Usuario #277688 -|- Slackware 12.1 / WinXP / Vista
PajoneiS está offline   Responder com Quote
Antigo 26-05-2005, 14:12   #6 (permalink)
Trakinas
Super Participante
 
Registrado em: Feb 2004
Localização: Juiz de Fora
Mensagens: 451
Reputação: 17 Trakinas está indo no caminho certo
Enviar mensagem via ICQ para Trakinas Enviar mensagem via AIM para Trakinas Enviar mensagem via Yahoo para Trakinas
Padrão

PajoneiS, a gente tava pensando em usar procedure...

mas parece que não vai... hehe

tá dando erro 113 e não sei o que tem de errado no nome da procedure! logo no começo!!

jqueiroz, valeu pelos toque! =)

abraço a todos!
Trakinas está offline   Responder com Quote
Antigo 26-05-2005, 15:19   #7 (permalink)
oninja
Newbie
 
Registrado em: Oct 2004
Mensagens: 11
Reputação: 0 oninja está indo no caminho certo
Padrão

o código q to usando com procedure é esse, e ta dando vários erros pra compilação:

Código:
program trab_est; uses crt; type registro = record matricula: string [10]; nome : string [30]; endereco : string [40]; sexo : string [1]; fone : string [15]; end; arquivo = file of registro; var trabalho: arquivo; reg: registro; opcao : integer; aux : string [10]; begin writeln ('Digite uma opcao'); readln (opcao); case (opcao) of '1' : gravar(reg); '2' : leitura(reg); end; procedure gravar(trabalho:registro); begin clrscr; assign (trabalho,'trabalho.arq'); rewrite (trabalho); writeln ('Informe Matricula:'); readln (reg.matricula); while reg.matricula <> '-1' do begin write ('Informe Nome:'); readln (reg.nome); write ('Informe Endereco:'); readln (reg.endereco); write ('Informe Sexo:'); readln (reg.sexo); if (reg.sexo <> 'f' ) and (reg.sexo <> 'm') then begin writeln ('Valor Invalido. Favor digitar um valor valido (f ou m).'); readln(reg.sexo); end; writeln ('Informe Fone:'); readln (reg.fone); writeln ('Informe nova Matricula:'); readln (reg.matricula); write(trabalho,reg); {grava registro após o último registro do arquivo} readln(reg.matricula); end; close(trabalho); end; procedure leitura(trabalho:reg); begin assign (trabalho,'trabalho.arq'); reset(trabalho); while (not EOF(trabalho)) do begin read (trabalho,reg); writeln(reg.matricula,' '); writeln(reg.nome,' '); writeln(reg.endereco,' '); writeln(reg.sexo,' '); writeln(reg.fone,' '); end; read (trabalho,reg); close(trabalho); end; {Procedura que altera o nome a paritir de um nome ja existente} procedure alterar(trabalho:reg); var aux:string; begin writeln('Digite a matricula que deseja alterar:'); readln(reg.matricula); while not eof(trabalho) do begin read(trabalho,reg); if aux=reg.matricula then begin writeln('Digite a nova matricula:'); readln(reg.matricula); writeln('Digite o novo nome:'); readln (reg.nome); writeln('Digite o novo endereco'); readln(reg.endereco); writeln('Digite o novo fone:'); readln(reg.fone); seek(trabalho,filepos(trabalho)-1); write(trabalho,reg); end; end; end; end.
oninja está offline   Responder com Quote
Antigo 27-05-2005, 14:38   #8 (permalink)
Trakinas
Super Participante
 
Registrado em: Feb 2004
Localização: Juiz de Fora
Mensagens: 451
Reputação: 17 Trakinas está indo no caminho certo
Enviar mensagem via ICQ para Trakinas Enviar mensagem via AIM para Trakinas Enviar mensagem via Yahoo para Trakinas
Padrão

olha só...

preciso de duas coisas funcionando na procedure leitura (vou por o código abaixo):

1. mostrar mensagem de erro e voltar ao início da procedure. Como que eu faço para ele verificar se não existe o registro, caso nao rsgistre, mostrar a msg: Uso ioresult? ou seek mesmo?

2. Ao final dela, gostaria de que você tivesse a opção de voltar ao inicio, sair, e fazer nova consulta. Quanto a sair, beleza. Quando eu mando fazer nova pesquisa, congela. E não tenho idéia de como fazer para voltar ao início... hehe... talvez colocando um repeat no início da procedure gravar??

obrigado!

Código:
program trab_est; uses crt; type registro = record matricula: string[10]; nome : string[30]; endereco : string[40]; sexo : string[1]; fone : string[15]; end; arquivo = file of registro; var trabalho: arquivo; reg: registro; opcao : integer; aux : string [10]; total: integer; procedure gravar; begin assign(trabalho,'trabalho.arq'); {$I-} reset(trabalho); if IORESULT <> 0 then Rewrite(trabalho) else Seek(trabalho,FileSize(trabalho)); {$I+} clrscr; write('Informe Matricula:'); readln(reg.matricula); while reg.matricula <> '-1' do begin write ('Informe Nome:'); readln (reg.nome); write ('Informe Endereco:'); readln (reg.endereco); write ('Informe Sexo:'); readln (reg.sexo); while (reg.sexo <> 'f' ) and (reg.sexo <> 'm') do begin writeln ('Valor Invalido. Favor digitar um valor valido (f ou m).'); readln(reg.sexo); end; write('Informe Fone:'); readln (reg.fone); write(trabalho,reg); {grava registro após o último registro do arquivo} clrscr; total := filesize(trabalho); write('Numero de registros:', total); writeln(''); write('Informe nova Matricula:'); readln(reg.matricula); end; close(trabalho); end; procedure leitura; var cadast: string; begin assign (trabalho,'trabalho.arq'); reset(trabalho); write('Digite o numero do cadastro:'); readln(cadast); read(trabalho, reg); while (not EOF(trabalho)) do if cadast = reg.matricula then begin seek(trabalho,filepos(trabalho)-1); read (trabalho,reg); writeln('Matricula:', reg.matricula); writeln('Nome.....:', reg.nome); writeln('Endereco.:', reg.endereco); writeln('Sexo.....:', reg.sexo); writeln('Fone.....:', reg.fone); writeln(''); writeln(reg.matricula); break; end; writeln ('Deseja fazer nova consulta? [1] para nova consulta, [2] para sair, [3] para voltar ao menu'); readln (opcao); case (opcao) of 1: leitura; 2: delay (1000); end; end; begin writeln ('digite opção'); writeln ('1- Gravar'); writeln ('2- Ler'); readln(opcao); case (opcao) of 1: gravar; 2: leitura; end; end.
Trakinas está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -3. Agora são 22:16.