existir arquivo marcado a gravacao do registro sera posicionado na posicao do marcado Seek(CadCli,Marcado).Senao existir nenhum marcado a gravacao do registro sera feito na ultima posicao de registro do arquivo e sera posicionado para Seek(CadCli,FileSize(CadCli)),;Em ambas as operacoes, apos ser posicionado o registro rascunho sera gravado no registro CadCli Write(CadCli,Cli1).repeat.................................Until T<>1;A condicao de repeticao testa se deseja alterar um novo cliente e enquanto T for diferente de 1 ele continua, a especificacao de T e uma variavel global que e alterada pelo procedure SimNao.O procedure em si se baseia nesta estrutura sendo as implementacoes para o bom funcionamento mostrado logo abaixo.Apos ser detectado se existe marcados ou nao antes de incluir qualquer cliente, executa-se uma rotina para verificar se existe o cliente ou nao. Caso exista o cliente, a operacao de inclusao e abortada.ind:=1Indica que ind e um indice e inicializo ele como sendo 1, indicando ser o primeiro.seek(CadCLI,0)Faco com o programa, aponte para o primeiro registro do arquivo, desta forma, tornando valido o valor determinado em Ind:=1;Marcado:=0Determino a variavel marcado que o valor e zero, essa variavel ira realizar atraves de comparacao em um loop ate final de arquivo em busca de registros marcados para exclusao.sai:=2Atribui a variavel Sai o valor 2, esta variavel e um teste que sera feito em cada passagem do enquanto, sendo que para forcar uma saida do programa, eu coloco o valor 1 em sai, pois o programa so fica em loop Enquanto Sai<>1.ProgramaProcedure IncluirCli; begin writeln; Writeln ('Incluindo'); repeat ind:=1; seek(CadCLI,0); Marcado:=0; sai:=2; While not Eof(CadCLI) and (sai<>1) do begin Read(CadCli,Cli1); if Cli1.Marca= '*'then begin Marcado:=ind; sai:=1; end; ind:=ind+1 end; writeln; if marcado >=1 then begin CamposCli; Cli1.CodCli:=Marcado; Cli1.Marca:=' '; ExisteCliente; If ExisteCli=False then begin Seek(CadCli,Marcado); Write(CadCli,Cli1); end else Begin WriteLn('Cliente j Cadastrado, Anulada a operacao'); end; end else begin CamposCli; Cli1.CodCli:=FileSize(CadCli); Cli1.Marca:=' '; ExisteCliente; if ExisteCli=False then begin Seek(CadCli,FileSize(CadCli)); Write(CadCli,Cli1); end else Begin WriteLn('Cliente j Cadastrado, Anulada a operacao'); end; end; Write ('Deseja Incluir mais Cliente (S/N)'); SimNao; Until T<>1; end;5.8 PROCEDURE AlteraCli;ObjetivoO objetivo deste e a alteracao de um dado regitro mediante pedido de busca. O cliente existindo e sendo encontrando deve ser mostrado na tela o conteudo do registro referente a ele e logo apos e pedido que se faca as devidas alteracoes a criterio do usuario.SolucaoA solucao para este problema pode ser resumido nas partes marcados do programa que de forma simplificada e grosseira, mostramos logo abaixo.Repeat ReadLn(Aux); While not Eof(CadCLI) and (t = 1) do If (Aux=Cli1.NomeCLI) and (Cli1.Marca <> '*') then seek(CadCLI,IND); Write(CadCli,Cli1);Until T<>1;A ideia desta estrutura e capturar um valor que o usuario deseja, atribuindo este a uma variavel auxiliarPara encontrar o registro certo e nao se perder, usamos um ponteiro chamado Ind, e posicionamos este no primeiro registro do arquivo. Realiza-se uma busca ate o final do arquivo e se for encontrado este cliente coloca o valor de sua posicao no apontador. de forma que a alteracao e feita da sequinte forma: aponte o arquivo CadCli para a posicao que IND contem, seek(CadCLI,IND) logo apos, gravamos a variavel rascunho que e semehante a uma ficha cadastral de