Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Mudando informação em file


Posts recomendados

@Simon Viegas

      clrscr;
      gotoxy(15,15); write('Digite o novo cnh: ');
      readln(Nome);
      assign(arquivo, 'C:\tete\armazem.dat');
      {$I-} reset(arquivo); {$I+};
      seek(arquivo, matr);
      read(arquivo, fu);
      fu.cnh:=Nome;
      write(arquivo, fu);
      close(arquivo);
      clrscr;
      gotoxy(15,15); Write(fu.cnh);
      delay(1000);
      tela

 

Link para o comentário
Compartilhar em outros sites

@Simon Viegas Consegui fazer funcionar com esse, mas ele é MUITO grande porquê é repetido 16vezes. por isso to tentando achar uma maneira mais fácil.

4:begin
      clrscr;
      gotoxy(15,15); write('Digite o novo titulo: ');
      readln(Num);
      assign(arquivo, 'C:\tete\armazem.dat');
      {$I-} reset(arquivo); {$I+};
      if ioresult = 0 then
      begin
        assign(novo, 'C:\tete\temp.dat');
        {$I-} rewrite(novo); {$I+};
        if ioresult = 0 then
        begin
          seek(arquivo, 0);
          while not eof(arquivo) do
          begin
            read(arquivo, contatoTemporario);
            if matr = contatoTemporario.matricula then
            begin
              contatoTemporario.titulo := Num;
              encontrado := true;
              write(novo, contatoTemporario);
            end
            else
            write(novo, contatoTemporario);
          end;
          close(arquivo);
          close(novo);
          erase(arquivo);
          rename(novo, 'C:\tete\armazem.dat');
          gotoxy(15,15); write('Alteração realizada com sucesso');
          delay(1000);
					tela;          
        end;
      end;
    end;

 

Link para o comentário
Compartilhar em outros sites

@Simon Viegas  AINDA NÃO ESTA PRONTO! mas ta ai.

Program Pzim ;
uses
crt;
type
funcionario = record
  matricula:integer;
  nome:string[50];
  cpf:string;
  rg:integer;
  titulo:integer;
  cnh:String;
  cep:integer;
endereco:string;
bairro:string;
cidade:string;
pais:string;
sexo:char;
uf:string[2];
estadocivil:string;
email:string;
telefone:integer;
dataa:integer;
datad:integer;
status:string;
end;
type
dependente = record
  nome:string;
  matricula:integer;
  cpf:integer;
end;
const maxli=2000;
var op,opc,mat,matr:integer;
fu:funcionario;
de:dependente;
arquivo: file of funcionario;
dep:array[1..maxli] of dependente;
func:array[1..maxli] of funcionario;



Procedure FundoBranco;
begin
  textbackground(white);
  clrscr;
  gotoxy(05,05);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,06);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,07);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,08);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,09);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,10);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,11);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,12);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,13);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,14);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,15);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,16);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,17);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,18);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,19);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,20);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,21);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,22);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,23);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,24);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,25);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,26);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,27);	textcolor(white);			textbackground(white);		write('                                     ' );
  gotoxy(05,28);	textcolor(white);			textbackground(white);		write('                                     ' );
end;
Procedure Bordas;
begin
  gotoxy(05,05);		textbackground(cyan );		write(' ··································· ' );
  gotoxy(05,06);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,06);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,07);		textbackground(cyan );		write(' ··································· ' );
  gotoxy(05,08);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,08);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,09);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,09);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,10);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,10);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,11);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,11);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,12);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,12);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,13);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,13);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,14);		textbackground(cyan ); 		write(' ·'                                    );
  gotoxy(40,14);		textbackground(cyan ); 		write('· '                                    );
  gotoxy(05,15);		textbackground(cyan ); 		write(' ·'                                    );
  gotoxy(40,15);		textbackground(cyan ); 		write('· '                                    );
  gotoxy(05,16);		textbackground(cyan ); 		write(' ·'                                    );
  gotoxy(40,16);		textbackground(cyan ); 		write('· '                                    );
  gotoxy(05,17);		textbackground(cyan ); 		write(' ·'                                    );
  gotoxy(40,17);		textbackground(cyan ); 		write('· '                                    );
  gotoxy(05,18);		textbackground(cyan ); 		write(' ·'                                    );
  gotoxy(40,18);		textbackground(cyan ); 		write('· '                                    );
  gotoxy(05,19);		textbackground(cyan ); 		write(' ·'                                    );
  gotoxy(40,19);		textbackground(cyan ); 		write('· '                                    );
  gotoxy(05,20);		textbackground(cyan ); 		write(' ·'                                    );
  gotoxy(40,20);		textbackground(cyan ); 		write('· '                                    );
  gotoxy(05,21);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,21);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,22);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,22);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,23);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,23);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,24);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,24);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,25);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,25);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,26);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,26);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,27);		textbackground(cyan );		write(' ·'                                    );
  gotoxy(40,27);		textbackground(cyan );		write('· '                                    );
  gotoxy(05,28);		textbackground(cyan );		write(' ··································· ' );
end;
Procedure tela;
begin
  FundoBranco;
  Bordas;
  gotoxy(17,06);		textbackground(white);		textcolor(black);		write(' TELA INICIAL');
  gotoxy(17,09);		textbackground(white);		textcolor(cyan);			write('1 - ');		textcolor(black);		write('REGISTRAR');
  gotoxy(17,11);		textbackground(white);		textcolor(cyan);			write('2 - ');		textcolor(black);		write('CONSULTAR');
  gotoxy(17,13);		textbackground(white);		textcolor(cyan);			write('3 - ');		textcolor(black);		write('ALTERAR'  );
  gotoxy(17,15);		textbackground(white);		textcolor(cyan);			write('4 - ');		textcolor(black);		write('ARQUIVO MORTO');
  gotoxy(17,17);		textbackground(white);		textcolor(cyan);			write('5 - ');		textcolor(black);		write('IMPRIMIR' );
  gotoxy(17,19);		textbackground(white);		textcolor(cyan);			write('6 - ');		textcolor(black);		write('SAIR'     );
  gotoxy(11,21);		textbackground(white);		textcolor(red);			write('DIGITE A OPÇÃO DESEJADA [ ]'          );
  gotoxy(36,21);		textbackground(white);		textcolor(black);			read(op);
  
end;
procedure informações;
begin
  gotoxy(08,06);		textbackground(white);		textcolor(black);			write('   1 - Novo  2- Sair  [ ]      ');
  gotoxy(08,08);		textbackground(white);		textcolor(black);			write('Matrícula: '        	           );
  gotoxy(08,09);		textbackground(white);		textcolor(black);			write('Nome: _________________________');
  gotoxy(08,10);		textbackground(white);		textcolor(black);			write('CPF: __________________________');
  gotoxy(08,11);		textbackground(white);		textcolor(black);			write('RG: ___________________________');
  gotoxy(08,12);		textbackground(white);		textcolor(black);			write('Título: _______________________');
  gotoxy(08,13);		textbackground(white);		textcolor(black);			write('CNH: __________________________');
  gotoxy(08,14);		textbackground(white);		textcolor(black);			write('CEP: __________________________');
gotoxy(08,15);		textbackground(white);		textcolor(black);			write('Endereço: _____________________');
gotoxy(08,16);		textbackground(white);		textcolor(black);			write('Bairro: _______________________');
gotoxy(08,17);		textbackground(white);		textcolor(black);			write('Cidade: _______________________');
gotoxy(08,18);		textbackground(white);		textcolor(black);			write('País: _________________________');
gotoxy(08,19);		textbackground(white);		textcolor(black);			write('Sexo: _________________________');
gotoxy(08,20);		textbackground(white);		textcolor(black);			write('UF: ___________________________');
gotoxy(08,21);		textbackground(white);		textcolor(black);			write('Estado Civil: _________________');
gotoxy(08,22);		textbackground(white);		textcolor(black);			write('E-mail: _______________________');
gotoxy(08,23);		textbackground(white);		textcolor(black);			write('Telefone: _____________________');
gotoxy(08,24);		textbackground(white);		textcolor(black);			write('Data de admissão: _____________');
gotoxy(10,25);		textbackground(white);		textcolor(red);				write('                          ');
gotoxy(10,26);		textbackground(white);		textcolor(red);				write('                          ');
end;

Procedure registroTitular;
var cad,mat,opr:integer;
begin
  FundoBranco;
  Bordas;
  informações;
end;
procedure cadastrar;
var o,op,opr,z:integer; le:char; cpf:string;
begin
  repeat
    registroTitular;
    gotoxy(31,06);read(o);
    if o=1 then
    begin
      assign(arquivo, 'C:\tete\armazem.dat');
      {$I-} reset(arquivo); {$I+};
      if ioresult <> 0 then
      rewrite	(arquivo);
      seek(arquivo, filesize(arquivo));
      fu.matricula:=filesize(arquivo)+1;
      
      gotoxy(18,08);write(fu.matricula);	gotoxy(14,09);read(fu.nome); 				gotoxy(13,10);read(fu.cpf);
      gotoxy(12,11);read(fu.rg);					gotoxy(16,12);read(fu.titulo);			gotoxy(13,13);read(fu.cnh);
    gotoxy(13,14);read(fu.cep);					gotoxy(18,15);read(fu.endereco);		gotoxy(16,16);read(fu.bairro);
    gotoxy(16,17);read(fu.cidade);			gotoxy(14,18);read(fu.pais);				gotoxy(14,19);read(fu.sexo);
    gotoxy(12,20);read(fu.uf);					gotoxy(22,21);read(fu.estadocivil);	gotoxy(16,22);read(fu.email);
    gotoxy(18,23);read(fu.telefone);		gotoxy(25,24);read(fu.dataa);
    gotoxy(08,06);											textbackground(white);							textcolor(black);			write('                               ');
    gotoxy(10,25);											textbackground(white);							textcolor(red);				write('1 - Salvar   2 - Cancelar');
    gotoxy(10,26);											textbackground(white);							textcolor(red);				write('Digite a opção desejada [ ]');
    gotoxy(35,26);											read(opr);
    close(arquivo);
    if opr=1 then
    begin
      fu.status:='ATIVO';
      assign(arquivo, 'C:\tete\armazem.dat');
      {$I-} 	reset(arquivo); {$I+};
      if ioresult <> 0 then
      rewrite(arquivo);
      if filesize(arquivo) > 0 then
      seek(arquivo, filesize(arquivo));
      write(arquivo, fu);
      close(arquivo);
    end;
    if opr=2 then
    assign(arquivo, 'C:\tete\armazem.dat');
    close(arquivo);
  end
  else
  begin
    textcolor(red);
    gotoxy(10,26);write('Saindo...');
    delay(1000);
    assign(arquivo, 'C:\tete\armazem.dat');
    close(arquivo);
  end;
until (o=2);
end;
Procedure registroOpcao;
begin
  FundoBranco;			Bordas;
  gotoxy(17,06);		textbackground(white);		textcolor(black);		write('   REGISTRO');
  gotoxy(17,09);		textbackground(white);		textcolor(cyan);			write('1 - ');		textcolor(black);		write('TITULAR');
gotoxy(17,11);		textbackground(white);		textcolor(cyan);			write('2 - ');		textcolor(black);		write('DEPENDENTE');
gotoxy(17,13);		textbackground(white);		textcolor(cyan);			write('3 - ');		textcolor(black);		write('SAIR'  );
gotoxy(11,21);		textbackground(white);		textcolor(red);			write('DIGITE A OPÇÃO DESEJADA [ ]'          );
end;
Procedure registroDependente;
var x,y,r,op:integer;	e:boolean;
begin
  FundoBranco;			Bordas;
  gotoxy(17,06);		textbackground(white);		textcolor(black);			write('   REGISTRO');
  gotoxy(08,09);    textbackground(white);		textcolor(black);     write(' 1 - Novo  2 - Sair  [ ] ');
  gotoxy(30,09);		read(r);
  case r of
    2:begin;
      clrscr;
      registroOpcao;
    end;
    1:begin
      gotoxy(08,10);		textbackground(white);		textcolor(black);			write('Matrícula:_____________________');//Opções da tela
      gotoxy(18,10); 		read(mat);
      if func[mat].matricula=mat then
      begin
        de.matricula:=mat;
        gotoxy(08,11);		textbackground(white);		textcolor(green);			write('Matricula Válida!');
        gotoxy(10,30);    textbackground(white);		textcolor(red);       write('Matricula em Nome de: ',func[mat].nome);
        gotoxy(10,31);    textbackground(white);		textcolor(red);       write('Matricula No Cpf: ',func[mat].cpf);
        gotoxy(08,12);		textbackground(white);		textcolor(black);			write('Nome: _________________________');
        gotoxy(15,12); 		read (de.nome);
        gotoxy(08,13);		textbackground(white);		textcolor(black);			write('CPF: __________________________');
        gotoxy(13,13); 		read	(de.cpf);
        gotoxy(10,25);		textbackground(white);		textcolor(red);				write('1 - Salvar   2 - Cancelar');
        gotoxy(10,26);		textbackground(white);		textcolor(red);				write('Digite a opção desejada [ ]');
        gotoxy(35,26); 		read (op);
        case op of
          1:begin
            dep[mat]:=de;
            clrscr;
            gotoxy(08,12);  Textbackground(white); 	textcolor(green);			write('Registro Salvo com Sucesso!!');
            tela;
          end;
          2:begin
            Clrscr;
            gotoxy(08,12);  Textbackground(white); 	textcolor(green);			write('Operação Cancelada!!');
            tela;
          end;
        end;
      end
      else
      begin
        gotoxy(08,11);		textbackground(white);		textcolor(red);			write('Matricula Inválida!');
      delay(750);				registroDependente;
    end;
  end;
end;
end;


Procedure Imprimir;
var linha,contador,mtt,mtt2,o,x,z,k:integer;
begin
  x:=10;
  z:=0;
  k:=10;
  assign(arquivo, 'C:\tete\armazem.dat');
  {$I-} reset(arquivo); {$I+};
  if ioresult <> 0 then
  begin
    writeln;
    write(' Nada encontrado no arquivo!');
    delay(1000);
  end
  else
  begin
    seek(arquivo, 0);
    while not eof(arquivo) do
    begin
      repeat
        read(arquivo, fu);
        textbackground(white);
        inc(z);
        gotoxy(05,linha+05);		textcolor(white);		textbackground(white);		write('                                     ' );// Início do fundo branco
        gotoxy(05,linha+06);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+07);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+08);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+09);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+10);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+11);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+12);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+13);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+14);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+15);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+16);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+17);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+18);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+19);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+20);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+21);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+22);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+23);		textcolor(white);		textbackground(white);		write('                                     ' );
        gotoxy(05,linha+24);		textcolor(white);		textbackground(white);		write('                                     ' );// Final do fundo branco
        gotoxy(05,linha+05);		textbackground(cyan );		write(' ··································· ' );//Início das bordas
        gotoxy(05,linha+06);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+06);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+07);		textbackground(cyan );		write(' ··································· ' );
        gotoxy(05,linha+08);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+08);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+09);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+09);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+10);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+10);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+11);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+11);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+12);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+12);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+13);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+13);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+14);		textbackground(cyan ); 		write(' ·'                                    );
        gotoxy(40,linha+14);		textbackground(cyan ); 		write('· '                                    );
        gotoxy(05,linha+15);		textbackground(cyan ); 		write(' ·'                                    );
        gotoxy(40,linha+15);		textbackground(cyan ); 		write('· '                                    );
        gotoxy(05,linha+16);		textbackground(cyan ); 		write(' ·'                                    );
        gotoxy(40,linha+16);		textbackground(cyan ); 		write('· '                                    );
        gotoxy(05,linha+17);		textbackground(cyan ); 		write(' ·'                                    );
        gotoxy(40,linha+17);		textbackground(cyan ); 		write('· '                                    );
        gotoxy(05,linha+18);		textbackground(cyan ); 		write(' ·'                                    );
        gotoxy(40,linha+18);		textbackground(cyan ); 		write('· '                                    );
        gotoxy(05,linha+19);		textbackground(cyan ); 		write(' ·'                                    );
        gotoxy(40,linha+19);		textbackground(cyan ); 		write('· '                                    );
        gotoxy(05,linha+20);		textbackground(cyan ); 		write(' ·'                                    );
        gotoxy(40,linha+20);		textbackground(cyan ); 		write('· '                                    );
        gotoxy(05,linha+21);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+21);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+22);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+22);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+23);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+23);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+24);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+24);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+25);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+25);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+26);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+26);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+27);		textbackground(cyan );		write(' ·'                                    );
        gotoxy(40,linha+27);		textbackground(cyan );		write('· '                                    );
        gotoxy(05,linha+28);		textbackground(cyan );		write(' ··································· ' );//Final das bordas
        gotoxy(17,linha+06);		textbackground(white);		textcolor(black);			write('   IMPRESSÃO     ');// Título da tela
        gotoxy(08,linha+08);		textbackground(white);		textcolor(black);			write('Matrícula: '        	       );//Opções da tela
        gotoxy(08,linha+09);		textbackground(white);		textcolor(black);			write('Nome: _________________________');
        gotoxy(08,linha+10);		textbackground(white);		textcolor(black);			write('CPF: __________________________');
        gotoxy(08,linha+11);		textbackground(white);		textcolor(black);			write('RG: ___________________________');
        gotoxy(08,linha+12);		textbackground(white);		textcolor(black);			write('Título: _______________________');
        gotoxy(08,linha+13);		textbackground(white);		textcolor(black);			write('CNH: __________________________');
        gotoxy(08,linha+14);		textbackground(white);		textcolor(black);			write('CEP: __________________________');
      gotoxy(08,linha+15);		textbackground(white);		textcolor(black);			write('Endereço: _____________________');
      gotoxy(08,linha+16);		textbackground(white);		textcolor(black);			write('Bairro: _______________________');
      gotoxy(08,linha+17);		textbackground(white);		textcolor(black);			write('Cidade: _______________________');
      gotoxy(08,linha+18);		textbackground(white);		textcolor(black);			write('País: _________________________');
      gotoxy(08,linha+19);		textbackground(white);		textcolor(black);			write('Sexo: _________________________');
      gotoxy(08,linha+20);		textbackground(white);		textcolor(black);			write('UF: ___________________________');
      gotoxy(08,linha+21);		textbackground(white);		textcolor(black);			write('Estado Civil: _________________');
      gotoxy(08,linha+22);		textbackground(white);		textcolor(black);			write('E-mail: _______________________');
      gotoxy(08,linha+23);		textbackground(white);		textcolor(black);			write('Telefone: _____________________');
      gotoxy(08,linha+24);		textbackground(white);		textcolor(black);			write('Data de admissão: _____________');
      gotoxy(08,linha+25);		textbackground(white);		textcolor(black);			write('Status: _______________________');
      gotoxy(10,linha+26);		textbackground(white);		textcolor(red);				write('                          ');
      gotoxy(18,linha+08);		textbackground(white);		textcolor(black);			write(fu.matricula);
      gotoxy(08,linha+09);		textbackground(white);		textcolor(black);			write('Nome: _________________________');
      gotoxy(08,linha+10);		textbackground(white);		textcolor(black);			write('CPF: __________________________');
      gotoxy(08,linha+11);		textbackground(white);		textcolor(black);			write('RG: ___________________________');
      gotoxy(08,linha+12);		textbackground(white);		textcolor(black);			write('Título: _______________________');
      gotoxy(08,linha+13);		textbackground(white);		textcolor(black);			write('CNH: __________________________');
      gotoxy(08,linha+14);		textbackground(white);		textcolor(black);			write('CEP: __________________________');
    gotoxy(08,linha+15);		textbackground(white);		textcolor(black);			write('Endereço: _____________________');
    gotoxy(08,linha+16);		textbackground(white);		textcolor(black);			write('Bairro: _______________________');
    gotoxy(08,linha+17);		textbackground(white);		textcolor(black);			write('Cidade: _______________________');
    gotoxy(08,linha+18);		textbackground(white);		textcolor(black);			write('País: _________________________');
    gotoxy(08,linha+19);		textbackground(white);		textcolor(black);			write('Sexo: _________________________');
    gotoxy(08,linha+20);		textbackground(white);		textcolor(black);			write('UF: ___________________________');
    gotoxy(08,linha+21);		textbackground(white);		textcolor(black);			write('Estado Civil: _________________');
    gotoxy(08,linha+22);		textbackground(white);		textcolor(black);			write('E-mail: _______________________');
    gotoxy(08,linha+23);		textbackground(white);		textcolor(black);			write('Telefone: _____________________');
    gotoxy(08,linha+24);		textbackground(white);		textcolor(black);			write('Data de admissão: _____________');
    gotoxy(08,linha+25);		textbackground(white);		textcolor(black);			write('Status: _______________________');
    gotoxy(10,linha+26);		textbackground(white);		textcolor(red);				write('                          ');
    inc(linha,22);
    if (z=x)and(k>=10) then
    begin
      readkey;
      k:=(filesize(arquivo)-x);
      inc(x,10);
    end
    else if k<10 then
    begin
      dec(k);
      if k=0 then readkey;
    end;
  until (x=filesize(arquivo))or(k=0);
  readkey;
  
end;
op:=0;
close(arquivo);
end;
end;
Procedure BuscaCPF;
var op:integer;		e:boolean;		busca:string;
begin
  FundoBranco;			Bordas;										e:=false;
  gotoxy(15,06);		textbackground(white);		textcolor(black);		write('BUSCA POR CPF');
  gotoxy(08,09);		textbackground(white);		textcolor(cyan);			write('CPF: ');		textcolor(black);		write('____________________');
  gotoxy(12,09); 		read(busca);
  assign(arquivo, 'C:\tete\armazem.dat');
  {$I-} reset(arquivo); {$I+};
  if ioresult <> 0 then
  begin
    writeln;
    write(' Nada encontrado no arquivo!');
    delay(1000);
  end
  else
  begin
    seek(arquivo, 0);
    while not eof(arquivo) do
    begin
      read(arquivo, fu);
      if fu.cpf = busca then
      begin
        e:=true;
        gotoxy(08,10);   textbackground(white);		textcolor(cyan);  write('Nome: ');
        gotoxy(14,10);   textbackground(white);   textcolor(black); write(fu.nome);
        gotoxy(08,11);   textbackground(white);		textcolor(cyan);  write('CPF: ');
        gotoxy(13,11);   textbackground(white);   textcolor(black); write(fu.cpf);
        gotoxy(08,12);   textbackground(white);		textcolor(cyan);  write('RG: ');
        gotoxy(12,12);   textbackground(white);   textcolor(black); write(fu.rg);
        gotoxy(08,13);   textbackground(white);		textcolor(cyan);  write('Titulo: ');
        gotoxy(16,13);   textbackground(white);   textcolor(black); write(fu.titulo);
        gotoxy(08,14);   textbackground(white);		textcolor(cyan);  write('CNH: ');
        gotoxy(12,14);   textbackground(white);   textcolor(black); write(fu.cnh);
        gotoxy(08,15);   textbackground(white);		textcolor(cyan);  write('CEP: ');
        gotoxy(12,15);   textbackground(white);   textcolor(black); write(fu.cep);
      gotoxy(08,16);   textbackground(white);		textcolor(cyan);  write('Endereço: ');
    gotoxy(17,16);   textbackground(white);   textcolor(black); write(fu.endereco);
    gotoxy(08,17);   textbackground(white);		textcolor(cyan);  write('Bairro: ');
    gotoxy(15,17);   textbackground(white);   textcolor(black); write(fu.bairro);
    gotoxy(08,18);   textbackground(white);		textcolor(cyan);  write('Cidade: ');
    gotoxy(15,18);   textbackground(white);   textcolor(black); write(fu.cidade);
    gotoxy(08,19);   textbackground(white);		textcolor(cyan);  write('Pais: ');
    gotoxy(13,19);   textbackground(white);   textcolor(black); write(fu.pais);
    gotoxy(08,20);   textbackground(white);		textcolor(cyan);  write('Sexo: ');
    gotoxy(13,20);   textbackground(white);   textcolor(black); write(fu.sexo);
    gotoxy(08,21);   textbackground(white);		textcolor(cyan);  write('UF: ');
    gotoxy(11,21);   textbackground(white);   textcolor(black); write(fu.uf);
    gotoxy(08,22);   textbackground(white);		textcolor(cyan);  write('Estado Civil: ');
    gotoxy(21,22);   textbackground(white);   textcolor(black); write(fu.estadocivil);
    gotoxy(08,23);   textbackground(white);		textcolor(cyan);  write('Email: ');
    gotoxy(15,23);   textbackground(white);   textcolor(black); write(fu.Email);
    gotoxy(08,24);   textbackground(white);		textcolor(cyan);  write('Telefone: ');
    gotoxy(17,24);   textbackground(white);   textcolor(black); write(fu.telefone);
    gotoxy(08,25);   textbackground(white);		textcolor(cyan);  write('Data de Admissão: ');
    gotoxy(25,25);   textbackground(white);   textcolor(black); write(fu.dataa);
    gotoxy(08,26);   textbackground(white);		textcolor(cyan);  write('Status: ');
    gotoxy(15,26);   textbackground(white);   textcolor(black); write(fu.status);
    gotoxy(08,27);   textbackground(white);   textcolor(black); write('1 - Consultar 2 - Sair [ ]');
    gotoxy(32,27); read(op);
  end;
end;
close(arquivo);
end;

case op of
  1:BuscaCPF;
  2:begin
    close(arquivo);
    tela;
  end;
end;
end;

Procedure BuscaMatricula;
var op:integer;
e:boolean;
busca:integer;
begin
  FundoBranco;
  Bordas;
  e:=false;
  gotoxy(15,06);		textbackground(white);		textcolor(black);		write('BUSCA POR MATRICULA');
  gotoxy(08,09);		textbackground(white);		textcolor(cyan);			write('MATRÍCULA: ');		textcolor(black);		write('____________________');
  gotoxy(19,09); read(busca);
  assign(arquivo, 'C:\tete\armazem.dat');
  {$I-} reset(arquivo); {$I+};
  if ioresult <> 0 then
  begin
    writeln;
    write(' Nada encontrado no arquivo!');
    delay(1000);
  end
  else
  begin
    seek(arquivo, 0);
    while not eof(arquivo) do
    begin
      read(arquivo, fu);
      if fu.matricula = busca then
      begin
        e:=true;
        gotoxy(08,10);   textbackground(white);		textcolor(cyan);  write('Nome: ');
        gotoxy(14,10);   textbackground(white);   textcolor(black); write(fu.nome);
        gotoxy(08,11);   textbackground(white);		textcolor(cyan);  write('CPF: ');
        gotoxy(13,11);   textbackground(white);   textcolor(black); write(fu.cpf);
        gotoxy(08,12);   textbackground(white);		textcolor(cyan);  write('RG: ');
        gotoxy(12,12);   textbackground(white);   textcolor(black); write(fu.rg);
        gotoxy(08,13);   textbackground(white);		textcolor(cyan);  write('Titulo: ');
        gotoxy(16,13);   textbackground(white);   textcolor(black); write(fu.titulo);
        gotoxy(08,14);   textbackground(white);		textcolor(cyan);  write('CNH: ');
        gotoxy(12,14);   textbackground(white);   textcolor(black); write(fu.cnh);
        gotoxy(08,15);   textbackground(white);		textcolor(cyan);  write('CEP: ');
        gotoxy(12,15);   textbackground(white);   textcolor(black); write(fu.cep);
      gotoxy(08,16);   textbackground(white);		textcolor(cyan);  write('Endereço: ');
    gotoxy(17,16);   textbackground(white);   textcolor(black); write(fu.endereco);
    gotoxy(08,17);   textbackground(white);		textcolor(cyan);  write('Bairro: ');
    gotoxy(15,17);   textbackground(white);   textcolor(black); write(fu.bairro);
    gotoxy(08,18);   textbackground(white);		textcolor(cyan);  write('Cidade: ');
    gotoxy(15,18);   textbackground(white);   textcolor(black); write(fu.cidade);
    gotoxy(08,19);   textbackground(white);		textcolor(cyan);  write('Pais: ');
    gotoxy(13,19);   textbackground(white);   textcolor(black); write(fu.pais);
    gotoxy(08,20);   textbackground(white);		textcolor(cyan);  write('Sexo: ');
    gotoxy(13,20);   textbackground(white);   textcolor(black); write(fu.sexo);
    gotoxy(08,21);   textbackground(white);		textcolor(cyan);  write('UF: ');
    gotoxy(11,21);   textbackground(white);   textcolor(black); write(fu.uf);
    gotoxy(08,22);   textbackground(white);		textcolor(cyan);  write('Estado Civil: ');
    gotoxy(21,22);   textbackground(white);   textcolor(black); write(fu.estadocivil);
    gotoxy(08,23);   textbackground(white);		textcolor(cyan);  write('Email: ');
    gotoxy(15,23);   textbackground(white);   textcolor(black); write(fu.Email);
    gotoxy(08,24);   textbackground(white);		textcolor(cyan);  write('Telefone: ');
    gotoxy(17,24);   textbackground(white);   textcolor(black); write(fu.telefone);
    gotoxy(08,25);   textbackground(white);		textcolor(cyan);  write('Data de Admissão: ');
    gotoxy(25,25);   textbackground(white);   textcolor(black); write(fu.dataa);
    gotoxy(08,26);   textbackground(white);		textcolor(cyan);  write('Status: ');
    gotoxy(15,26);   textbackground(white);   textcolor(black); write(fu.status);
    gotoxy(08,27);   textbackground(white);   textcolor(black); write('1 - Consultar 2 - Sair [ ]');
    gotoxy(32,27); read(op);
  end;
end;
close(arquivo);
end;
case op of
  1:BuscaMatricula;
  2:begin
    close(arquivo);
    tela;
  end;
end;
end;


Procedure alterarinterface;
var
encontrado: boolean;
op,num: integer;
nome,x: string;
contatoTemporario: funcionario;
arquivoAntigo, arquivoAtualizado: file of funcionario;
begin
  encontrado := false;
  clrscr;
  writeln('     Atualização de Cadastro');
  writeln;
  write(' Numero da matricula: ');
  readln(matr);
  {$I-} reset(arquivo); {$I+};
  if ioresult <> 0 then
  begin
    writeln;
    write(' Nada encontrado no arquivo!');
    delay(1000);
    tela;
  end
  else
  begin
    seek(arquivo, 0);
    while not eof(arquivo) do
    begin
      read(arquivo, fu);
      if fu.matricula = matr then
      begin
        gotoxy(08,10);   textbackground(white);		textcolor(black);  write('1 - Nome: ');
        gotoxy(18,10);   textbackground(white);   textcolor(black); write(fu.nome);
        gotoxy(08,11);   textbackground(white);		textcolor(black);  write('2 - CPF: ');
        gotoxy(17,11);   textbackground(white);   textcolor(black); write(fu.cpf);
        gotoxy(08,12);   textbackground(white);		textcolor(black);  write('3 - RG: ');
        gotoxy(16,12);   textbackground(white);   textcolor(black); write(fu.rg);
        gotoxy(08,13);   textbackground(white);		textcolor(black);  write('4 - Titulo: ');
        gotoxy(20,13);   textbackground(white);   textcolor(black); write(fu.titulo);
        gotoxy(08,14);   textbackground(white);		textcolor(black);  write('5 - CNH: ');
        gotoxy(16,14);   textbackground(white);   textcolor(black); write(fu.cnh);
        gotoxy(08,15);   textbackground(white);		textcolor(black);  write('6 - CEP: ');
        gotoxy(16,15);   textbackground(white);   textcolor(black); write(fu.cep);
      gotoxy(08,16);   textbackground(white);		textcolor(black);  write('7 - Endereço: ');
    gotoxy(21,16);   textbackground(white);   textcolor(black); write(fu.endereco);
    gotoxy(08,17);   textbackground(white);		textcolor(black);  write('8 - Bairro: ');
    gotoxy(19,17);   textbackground(white);   textcolor(black); write(fu.bairro);
    gotoxy(08,18);   textbackground(white);		textcolor(black);  write('9 - Cidade: ');
    gotoxy(19,18);   textbackground(white);   textcolor(black); write(fu.cidade);
    gotoxy(08,19);   textbackground(white);		textcolor(black);  write('10 - Pais: ');
    gotoxy(18,19);   textbackground(white);   textcolor(black); write(fu.pais);
    gotoxy(08,20);   textbackground(white);		textcolor(black);  write('11 - Sexo: ');
    gotoxy(18,20);   textbackground(white);   textcolor(black); write(fu.sexo);
    gotoxy(08,21);   textbackground(white);		textcolor(black);  write('12 - UF: ');
    gotoxy(16,21);   textbackground(white);   textcolor(black); write(fu.uf);
    gotoxy(08,22);   textbackground(white);		textcolor(black);  write('13 - Estado Civil: ');
    gotoxy(26,22);   textbackground(white);   textcolor(black); write(fu.estadocivil);
    gotoxy(08,23);   textbackground(white);		textcolor(black);  write('14 - Email: ');
    gotoxy(20,23);   textbackground(white);   textcolor(black); write(fu.Email);
    gotoxy(08,24);   textbackground(white);		textcolor(black);  write('15 - Telefone: ');
    gotoxy(22,24);   textbackground(white);   textcolor(black); write(fu.telefone);
    gotoxy(08,25);   textbackground(white);		textcolor(black);  write('16 - Data de Admissão: ');
    gotoxy(30,25);   textbackground(white);   textcolor(black); write(fu.dataa);
    gotoxy(08,28);  write('O que deseja alterar?: ');
  end;
end;
close(arquivo);
end;
end;

procedure alterarmec;
var
op,num:integer;
Nome,test:string;
novo: file of funcionario;
contatotemporario:funcionario;
encontrado:boolean;

begin
  gotoxy(30,28); read(op);
  case op of
    1:begin
      clrscr;
      gotoxy(15,15); write('Digite o novo nome: ');
      readln(Nome);
      assign(arquivo, 'C:\tete\armazem.dat');
      {$I-} reset(arquivo); {$I+};
      if ioresult = 0 then
      begin
        assign(novo, 'C:\tete\temp.dat');
        {$I-} rewrite(novo); {$I+};
        if ioresult = 0 then
        begin
          seek(arquivo, 0);
          while not eof(arquivo) do
          begin
            read(arquivo, contatoTemporario);
            if matr = contatoTemporario.matricula then
            begin
              contatoTemporario.nome := Nome;
              encontrado := true;
              write(novo, contatoTemporario);
            end
            else
            write(novo, contatoTemporario);
          end;
          close(arquivo);
          close(novo);
          erase(arquivo);
          rename(novo, 'C:\tete\armazem.dat');
          gotoxy(15,15); write('Alteração realizada com sucesso');
          delay(1000);
          tela;
        end;
      end;
    end;
    2:begin
      clrscr;
      gotoxy(15,15); write('Digite o novo cpf: ');
      readln(Nome);
      assign(arquivo, 'C:\tete\armazem.dat');
      {$I-} reset(arquivo); {$I+};
      if ioresult = 0 then
      begin
        assign(novo, 'C:\tete\temp.dat');
        {$I-} rewrite(novo); {$I+};
        if ioresult = 0 then
        begin
          seek(arquivo, 0);
          while not eof(arquivo) do
          begin
            read(arquivo, contatoTemporario);
            if matr = contatoTemporario.matricula then
            begin
              contatoTemporario.cpf := Nome;
              encontrado := true;
              write(novo, contatoTemporario);
            end
            else
            write(novo, contatoTemporario);
          end;
          close(arquivo);
          close(novo);
          erase(arquivo);
          rename(novo, 'C:\tete\armazem.dat');
          gotoxy(15,15); write('Alteração realizada com sucesso');
          delay(1000);
          tela;
        end;
      end;
    end;
    3:begin
      clrscr;
      gotoxy(15,15); write('Digite o novo rg: ');
      readln(Num);
      assign(arquivo, 'C:\tete\armazem.dat');
      {$I-} reset(arquivo); {$I+};
      if ioresult = 0 then
      begin
        assign(novo, 'C:\tete\temp.dat');
        {$I-} rewrite(novo); {$I+};
        if ioresult = 0 then
        begin
          seek(arquivo, 0);
          while not eof(arquivo) do
          begin
            read(arquivo, contatoTemporario);
            if matr = contatoTemporario.matricula then
            begin
              contatoTemporario.rg := Num;
              encontrado := true;
              write(novo, contatoTemporario);
            end
            else
            write(novo, contatoTemporario);
          end;
          close(arquivo);
          close(novo);
          erase(arquivo);
          rename(novo, 'C:\tete\armazem.dat');
          gotoxy(15,15); write('Alteração realizada com sucesso');
          delay(1000);
          tela;
        end;
      end;
    end;
    4:begin
      clrscr;
      gotoxy(15,15); write('Digite o novo titulo: ');
      readln(Num);
      assign(arquivo, 'C:\tete\armazem.dat');
      {$I-} reset(arquivo); {$I+};
      if ioresult = 0 then
      begin
        assign(novo, 'C:\tete\temp.dat');
        {$I-} rewrite(novo); {$I+};
        if ioresult = 0 then
        begin
          seek(arquivo, 0);
          while not eof(arquivo) do
          begin
            read(arquivo, contatoTemporario);
            if matr = contatoTemporario.matricula then
            begin
              contatoTemporario.titulo := Num;
              encontrado := true;
              write(novo, contatoTemporario);
            end
            else
            write(novo, contatoTemporario);
          end;
          close(arquivo);
          close(novo);
          erase(arquivo);
          rename(novo, 'C:\tete\armazem.dat');
          gotoxy(15,15); write('Alteração realizada com sucesso');
          delay(1000);
          tela;
        end;
      end;
    end;
    5:begin
      clrscr;
      gotoxy(15,15); write('Digite o novo cnh: ');
      readln(Nome);
      assign(arquivo, 'C:\tete\armazem.dat');
      {$I-} reset(arquivo); {$I+};
      seek(arquivo, matr);
      read(arquivo, fu);
      fu.cnh:=Nome;
      write(arquivo, fu);
      close(arquivo);
      clrscr;
      gotoxy(15,15); Write(fu.cnh);
      delay(1000);
      tela;
    end;
    
  end;
end;


procedure opbusca;
var opb:integer;
begin
  fundobranco;
  bordas;
  gotoxy(17,06);		textbackground(white);		textcolor(black);		write('BUSCA POR');
  gotoxy(17,09);		textbackground(white);		textcolor(cyan);			write('1 - ');		textcolor(black);		write('MATRÍCULA');
  gotoxy(17,11);		textbackground(white);		textcolor(cyan);			write('2 - ');		textcolor(black);		write('CPF');
  gotoxy(17,13);		textbackground(white);		textcolor(cyan);			write('3 - ');		textcolor(black);		write('SAIR'  );
  gotoxy(11,21);		textbackground(white);		textcolor(red);			write('DIGITE A OPÇÃO DESEJADA [ ]'          );
  gotoxy(36,21);		textbackground(white);		textcolor(black);			read(opb);
  case opb of
    1:buscamatricula;
    2:buscacpf;
    3:op:=0;
  end;
end;

Begin
  assign(arquivo, 'C:\tete\armazem.dat');
  tela;
  repeat
    case op of
      0:tela;
      1:begin
        clrscr;
        registroOpcao;
        gotoxy(36,21);		textbackground(white);		textcolor(black);			read(opc);;
        
        case opc of
          
        1:begin	registroTitular;	cadastrar;	end;
          
        2:registroDependente;
        
      3:begin	clrscr;	tela;	end;
        
      end;
    end;
    
    2:opbusca;
    
    3:begin
      alterarinterface;
      alterarmec;
    end;
    
  5:begin	imprimir;	readkey;	end;
    
    7:begin
      assign(arquivo, 'C:\tete\armazem.dat');
      reset(arquivo);
      close(arquivo);
      clrscr;
      gotoxy(15,15); textcolor(red); write('Digite a Senha Master: ');
      gotoxy(37,15); read(op);
      if op=0206 then
      begin
        erase(arquivo);
        gotoxy(15,16);write('Arquivo excluído');
        readkey;
      end;
      tela;
    end;
  end;
until op=6;
clrscr;
gotoxy(15,15);write('Sistema finalizado com sucesso!');
delay(1000);
End.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Você está conseguindo cadastrar e listar os registros?

 

Se o programa está funcionando normal e quer alterar um registro no arquivo, precisa fazer isso:

 

-

 

 

 

41 minutos atrás, TheMajor disse:

@Simon Viegas


      clrscr;
      gotoxy(15,15); write('Digite o novo cnh: ');
      readln(Nome);
      assign(arquivo, 'C:\tete\armazem.dat');
      {$I-} reset(arquivo); {$I+};
      seek(arquivo, matr);
      read(arquivo, fu);
      fu.cnh:=Nome;
      write(arquivo, fu);
      close(arquivo);
      clrscr;
      gotoxy(15,15); Write(fu.cnh);
      delay(1000);
      tela

 

É isso que você precisa fazer.

 

      ClrScr;
      GotoXY(15,15); write('Digite o novo CNH: ');
      readln(novo.cnh); //ler o novo valor para o CNH
      assign(arquivo, 'C:\tete\armazem.dat');
      {$I-} reset(arquivo); {$I+};
      Seek(arquivo, matr); //posiciona na posição do registro onde essa matrícula está
      read(arquivo, fu); //ler o registro do arquivo
      fu.cnh:=novo.cnh; //altera o que você quer na variável que tem o registro
      Seek(arquivo, matr); //reposiciona na posição do registro onde você vai escrever (na mesma, pois vai "reescrever")
      write(arquivo, fu); //escreve no arquivo
      close(arquivo);
      clrscr;
      {gotoxy(15,15); Write(fu.cnh);}
      delay(1000);
      tela;

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

1#

@TheMajor, é preciso posicionar um registro para trás:

 

Em vez de:

20 horas atrás, Simon Viegas disse:

Seek(arquivo, matr); //posiciona na posição do registro onde essa matrícula está

 

Fazer:

Seek(arquivo, matr-1); //posiciona na posição do registro onde essa matrícula está

 

Ou seja, o registro de matrícula 1, está na posição 0. O de matrícula 2, está na 1. Etc.

 

 

 

2#

Antes de posicionar é precisa validar o valor que quer pesquisar. Pois só deve dar o Seek() em posições válidas. Ex.:

if (matriculaBusca >= 1) and (matriculaBusca <= FileSize(arquivo)) then //valida se está na faixa de registros existentes
  begin
  Seek(arquivo, matriculaBusca-1);
  read(arquivo, funcionarioArquivo);  
  end
else
  wrinte('Matricula ', matriculaBusca, 'não encontrada');

 

 

Aí usar o funcionarioArquivo. Lembrando: você não precisa ler posição por posição, comparar, pois a matricula X sempre vai está na posição X-1.

 

 

***

 

Qualquer dúvida é só perguntar.

 

 

ADENDO:

Spoiler

Esse recurso de renomear não funcionar, pois você vai perder todos os registros anteriores e substituir por arquivo novo que só tem 1 registro.

 

20 horas atrás, TheMajor disse:


erase(arquivo);
rename(novo, 'C:\tete\armazem.dat');

 

 

EXTRA
 

Spoiler

Para demonstrar, poderia criar funções para buscar um registro do arquivo. Ex.:


//FUNÇÃO QUE RETORNA O NÚMERO DA POSIÇÃO DE UM REGISTRO A PARTIR DA MATRÍCULA
function BuscarPosicaoMatricula(matricula :integer) :integer;
  var
    posicaoMatricula :integer;
  begin
  if (matricula <= 0) or (matricula > FileSize(arquivo)) then //se está fora da faixa de registros existentes
    posicaoMatricula := -1 //flag que indica que não foi encontrado
  else
    posicaoMatricula := matricula-1; //o valor da matricula é a posição do regristro + 1 (logo posição = matricula-1)
  end;

//FUNÇÃO QUE RETORNA UM REGISTRO DE FUNCIONÁRIO A PARTIR DA MATRÍCULA
function BuscarFuncionarioPorMatricula(matricula :integer; var funcionarioBusca :funcionario) :boolean;
  var
    posicaoMatricula :integer;
  begin
  posicaoMatricula := BuscarPosicaoMatricula(matricula);
  if posicaoMatricula < 0 then //verificar se retornou uma posição válida
    BuscarFuncionarioPorMatricula := false //indica que não encontrou a matrícula
  else
    begin
    Seek(arquivo, posicaoMatricula); //posiciona o arquivo para ler o registro desejado
    read(arquivo, funcionarioBusca); //lear o registro
    BuscarFuncionarioPorMatricula := true; //indica que encontrou a matrícula
    end;
  end;

 

Na parte que precisa do registro no arquivo, invocaria o BuscarFuncionarioPorMatricula().

 

Etc

 

Link para o comentário
Compartilhar em outros sites

@Simon Viegas Esse recurso de renomear não funcionar, pois você vai perder todos os registros anteriores e substituir por arquivo novo que só tem 1 registro.

 

Você não entendeu, eu mando ele salvar 1 registro mudado, e todos os registros que não sejam daquela matricula...

 

Você possui discord? POderia compartilhar tela e desenvolver melhor cntg.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
18 horas atrás, TheMajor disse:

Você não entendeu, eu mando ele salvar 1 registro mudado, e todos os registros que não sejam daquela matricula... 

 

Hum! entendi.  Um exemplo aqui, né?

 

Em 08/06/2019 às 15:33, TheMajor disse:

          while not eof(arquivo) do
          begin
            read(arquivo, contatoTemporario);
            if matr = contatoTemporario.matricula then //se for o registro que quer alterar
            begin
              contatoTemporario.titulo := Num;
              encontrado := true;
              write(novo, contatoTemporario); //escreve o registro alterado no novo arquivo
            end
            else //se for outro registro (que não vai se alerado)
            write(novo, contatoTemporario); //escreve o registro no novo arquivo
          end;

 

Mas esse recurso seria para arquivos do tipo text. Para arquivos binários não precisa... e no contexto do seu algoritmo, mais ainda: não deveria. Imagina aí: se tivessem 1.000.000 de registro, faria mais de 1.000.000 de operações toda vez que fosse alterar um simples dado de um registro? nos arquivos do tipo file of não precisa disse. Nem para "excluir"... (nesse caso, implementaria uma exclusão lógica, como ter um campo "funcionario.excluido".)

 

 

 

Em relação ao posicionar em "matricula - 1", funcionou aí?

 

21 horas atrás, Simon Viegas disse:

Seek(arquivo, matr-1); //posiciona na posição do registro onde essa matrícula está

 

Isso é o cerne.

 

Toda vez que precisar buscar um registro pela matrícula, fará assim. Daí se precisar pesquisar por outro campo, como CPF ou nome, aí sim tem que ler registro por registro e ir verificando.

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...