Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

peste

Substituição de texto em ficheiro

Recommended Posts

peste

boas pessoal tudo bem?

é o seguinte, vou fazer um programa que ele vai inserir uns codigos que o meu prof deu.

tou a fazer no programa free pascal.

e tenho o seguinte codigo

program recuperacaoimagem;
var a,b: text;
    c:char;
    pc: string;


begin
        writeln('Qual o computador que quer adicionar');
        readln(pc);
        assign (a,'exper.txt');
        reset(a);
        rewrite(a);
        while not eof (a) do
        begin while not eoln(a) do
                begin read (a,c);
                        if (c='*') then
                        begin
                        writeln(pc);
                        end;
                end;
        end;
        close(a);
        readln;
end.

o que eu quero é que ele sempre que encontrar o * ele substituia pelo nome do pc, exemplo pc1.

eu penso que o writeln(pc) esteja mal, mas de ficheiro nao percebo muito  :bored:

e depois da-me este erro no reset

Run Time Error 4208419

Error address $0040A144

AJUDEM-ME PLEASE

abraço


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Share this post


Link to post
Share on other sites
thoga31

Boas!  😎

Pelo que percebi, tens um ficheiro qualquer, de nome exper.txt, criado e já com texto lá dentro inserido, e queres que o programa leia o ficheiro, e sempre que encontrar um '*' o programa o substitua pela string pc.

É isto?  :)

Para o programa escrever dentro do ficheiro, tens de o mandar fazer exactamente isso, como no READ. Além disso, para não fazer parágrafo, faz só WRITE:

write(a,pc);  //escrever no texto (ficheiro) 'a' o texto da string 'pc'

Quanto ao erro do RESET, ainda estou a ver o que se passa com ele...

Cumpz.


Knowledge is free!

Share this post


Link to post
Share on other sites
peste

Boas thoga31  :)

tipo o erro no virtual pascal nao parece dar, mas tem que ser no free pascal, foi o prof que mandou, porque é para usar o programa em linux, porque vai ficar ligado a um servidor de imagens.

tipo em ficheiros nunca percebi muito, tambem nao dei muita coisa por isso ando mesmo um bokado aos apalpanços.

para agora pos isto...


program recuperacaoimagem;
var a,b: text;
    c:char;
    pc: string;


begin
        writeln('Qual o computador que quer adicionar');
        readln(pc);
        assign (a,'exper.txt');
        //rewrite(a);
        reset(a);
        while not eof (a) do
        begin
                while not eoln(a) do
                begin

                        read (a,c);
                        if (c='*') then
                        begin
                                write(a,pc);
                        end;
                end;
        end;
        close(a);
        readln;
end.

pus o rewrite como comentario porque se nao me engano ele vai apagar o conteudo do ficheiro para poder escrever certo)??

achas que o codigo seek da jeito???

desde ja um obrigado =)

cumpz


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Share this post


Link to post
Share on other sites
thoga31

Boas peste! (lool) 😎

Eu também não percebo muito de ficheiros, mas já ando a desenvolver um programa que vai registando num txt tudo o que se vai passando. Contudo, nunca tinha experimentado substituição de texto nos ficheiros. O melhor que eu sei, neste caso, é fazer o programa ler o ficheiro original e reescreve-lo num novo ficheiro, e aí sim consigo fazê-lo substituir o '*' pela string 'pc'.

Não sei se pode ser resolvido desta forma, mas cá deixo o código, de qualquer das formas:

program recuperacaoimagem;
var a,b: text;
   c:char;
   pc: string;


begin
       writeln('Qual o computador que quer adicionar');
       readln(pc);
       assign (a,'exper.txt');
       assign (b,'exper_novo.txt');
       rewrite(b);
       reset(a);
       while NOT eof (a) do
       begin

               while NOT eoln(a) do
               begin

                       read (a,c);
                       if (c='*') then
                       begin
                               write(b,pc);
                       end
                       else begin
                               write(b,c);
                       end;
               end;
       end;
       close(a);
       close(b);
       readln;
end.

Mas vou procurar no meu manual de Pascal mais informações.

Cumpz. ;)


Knowledge is free!

Share this post


Link to post
Share on other sites
peste

boas thoga

e ele consegue alterar o * pela variavel pc?

qual o programa do pascal que utilizas-tes?

ai que dores de cabeça  :wallbash: lololol

abraço


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Share this post


Link to post
Share on other sites
thoga31

e ele consegue alterar o * pela variavel pc?

qual o programa do pascal que utilizas-tes?

Boas peste!

Utilizei tanto o Free Pascal como o Dev Pascal, e funcionou em ambos os compiladores.

Testei, e sim, substituiu o * pela variável pc.

Atenção: o ficheiro exper.txt fica inalterado, o exper_novo.txt é que já contem o novo texto, com os * substituídos.

Mais dúvidas em concreto, diz :thumbsup:

Cumpz.


Knowledge is free!

Share this post


Link to post
Share on other sites
peste

boas thoga

desculpa tar a ser chato lolol :thumbsup:

mas deu-t algum erro tipo exitcode=2;

tens os ficheiros e o programa em alguma pasta especifica??

abraço


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Share this post


Link to post
Share on other sites
thoga31

Boas!

Não estás a ser chato! Dúvidas são para ser esclarecidas, e estou neste fórum tanto para aprender como para ajudar  :thumbsup:

Esse código significa que o programa tentou aceder ao exper.txt mas não conseguiu porque ele não existia. O RESET implica que o ficheiro já esteja criado! Se o ficheiro não existir, o programa aborta a sua execução.

Se criares numa pasta que tenha lá o programa executável um ficheiro exper.txt, com algum texto lá dentro e * e tudo, vais ver que o programa vai criar o exper_novo.txt com as alterações feitas.

Cumpz.  :D


Knowledge is free!

Share this post


Link to post
Share on other sites
peste

boas thoga

a min com o ficheiro na pasta e o programa da-me esse erro

tou parado nesse erro  :thumbsup:

vou ver se dou a volta

abraço e mais uma vez obrigado


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Share this post


Link to post
Share on other sites
thoga31

Boas.

Talvez estejas a testar o programa correndo-o a partir do Free Pascal.

Experimenta compilar o programa e fechar o Free Pascal. Cria o ficheiro exper.txt com texto lá dentro, mete na mesma pasta o programa final, e executa-o. Normalmente os programas que trabalham com ficheiros não executam os comandos relacionados com eles quando são testados a partir dos compiladores. Talvez seja esse o caso.  :thumbsup:

Cumpz.


Knowledge is free!

Share this post


Link to post
Share on other sites
peste

boas

ja resolvi  :cheesygrin:

o programa vai ficar a correr no fedora, eu depois meto aqui o codigo, e o que faz mesmo,

tive foi no fedora de dar permissoes, e de seguida no programa onde tem o nome do ficheiro por o caminho

depois vez

ja agora um grande obrigado

abraço


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Share this post


Link to post
Share on other sites
thoga31

De nada!

Eu ainda não me iniciei em Linux, mas estava a pensar realmente instalar o Fedora 12, mas dentro em breve vai sair o 13... Como se instala o Fedora? Como é que ele trabalha? Não é como o Windows, que se instala no disco, ou é? Sou mesmo um leigo em Linux, confesso 😳

Sim, depois mete aqui o código, para ver como ficou ;)

Cumpz.


Knowledge is free!

Share this post


Link to post
Share on other sites
peste

tipo tenho umas imagens de como se instala o fedora, qual e que nao sei se o 11 ou o 12, mas e quase a mesma koisa

e porreiro porque é de codigo baerto, podemos "brincar" :cheesygrin:

se kiseres posso arranjar


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Share this post


Link to post
Share on other sites
thoga31

Já fiz o download do Fedora 12, e do guia de instalação. Mas acho que o Ubuntu é mais fácil de ser instalado, pelo que já vi... Contudo, entre os dois, acho que serei capaz de preferir Fedora.

Se quiseres, eu agradecia as imagens sobre a instalação do Fedora  :)

Cumpz.


Knowledge is free!

Share this post


Link to post
Share on other sites
peste

boas thoga

eu tenho de ver onde as deixei lolol

olha da-me aqui uma ajuda lolol

program projetoimagem;
uses crt;
var a,b: text;
   c:string;
   pc,proc: string;
   n,p,i:integer;

begin
   proc:='*';
   writeln('Qual o computador que quer adicionar');
   readln(pc);
   assign (a,'C:\Users\Rafael\Desktop\projecto\primeiro.txt');
   assign (b,'C:\Users\Rafael\Desktop\projecto\segundo.txt');
   reset(a);
   append(b);
   while NOT eof(a) do
   begin
       while NOT eoln(a) do
       begin
        read (a,c);
               writeln(c);
               n:=length(c);
               writeln(n);
               for i:=1 to n do
               begin
	        if (c[i]='*') then
                       begin
                               p:=pos('*',c);
               	        writeln(p);
	            	   delete(c,p,1);
	    		       insert(pc,c,p);
                     	   writeln(c);

	    		       readln;
	        end;
                       writeln('222');
               end;
               writeln('555');
               write(b,c);
               append(b);
       end;
       writeln ('777');
       readln;
   end;
   writeln('888');
   readln;
   close(a);
   close(b);
   readln;
end.

ele par-me sempre onde dix writeln (777)

tipo ta sempre a escrever o 777 lolol e nao acaba o programa

depois de tar tudo feito neste programa, eu tenho que fazer um relatorio e depois mando.t tambem

abraço


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Share this post


Link to post
Share on other sites
peste

boas thoga, tudo bem?

ja soluccionei o problema, pus so eoln,

para agora o programa esta assim

program projetoimagem;
uses crt, dos;
var a,b: text;
   c:string;

   d,e:text;
   f:string[255];

   pc: string;

   n,p,i,j,op:integer;


begin
   repeat
   writeln('Qual o computador que quer adicionar');
   readln(pc);
   assign (a,'C:\Users\Rafael\Desktop\projecto\primeiro.txt');
   assign (b,'C:\Users\Rafael\Desktop\projecto\segundo.txt');
   assign (d,'C:\Users\Rafael\Desktop\projecto\terceiro.txt');
   assign (e,'C:\Users\Rafael\Desktop\projecto\quarto.txt');
   reset(a);
   append(b);
   reset(d);
   append(e);
   exec('C:\command.com','mkdir C:\Users\Rafael\Desktop\projecto\script');//acho que e este o codigo, mas ele nao me cria
//********************************************************************
       while NOT eoln(a) do
       begin
               readln (a,c);
               n:=length(c);
               for i:=1 to n do
               begin
	        if (c[i]='*') then
                       begin
                               p:=pos('*',c);
	            	   delete(c,p,1);
	    		       insert(pc,c,p);
	        end;
               end;
               writeln(b,c);
               append(b);
end;
//********************************************************************
       while NOT eof(d) do
       begin
               readln (d,f);
               n:=length(f);
               for i:=1 to n do
               begin
	        if (f[i]='*') then
                       begin
                               p:=pos('*',f);
	            	   delete(f,p,1);
	    		       insert(pc,f,p);
	        end;
               end;
               writeln(e,f);
               append(e);
end;
//********************************************************************
   close(a);
   close(b);
   close(d);
   close(e);
   writeln('Deseja inserir MAIS algum pc? se sim introduza o numero 0');
   readln(op);
   until (op=0);
   writeln('Prima ENTER para sair');
   readln;
end.

aproveito ja t ponho aqui o link das imagens da instalaçao do fedora 11

http://img514.imageshack.us/g/36409356.jpg/

http://img514.imageshack.us/slideshow/webplayer.php?id=36409356.jpg

agora a minha duvida lolo 😳

é o seguinte quero criar directorias no pascal, sei que tenho que usar o uses dos

mas como é que faço o codigo

ja agora obrigado pela imensa ajuda que tens dado

abraço


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Share this post


Link to post
Share on other sites
thoga31

Boas peste! 😎

Desculpa não ter respondido mais cedo, mas tenho andado cheio de testes e trabalhos...

Vou analisar com mais cuidado, quando tiver mais tempo, este último código. Confesso que nunca tinha visto o comando exec, mas vou estudar mais sobre ele.

Exactamente o que queres que o programa em Pascal faça em relação a directórios? Queres que o programa crie pastas? Se for isso, terás de me dar algum tempo, se não te importares, para eu poder estudar isso com o devido cuidado com que gosto de estudar. :)

Já agora, obrigado pelas imagens, dentro em breve vou experimentar instalar o Fedora.

Cumpz. :)


Knowledge is free!

Share this post


Link to post
Share on other sites
peste

boas thoga

na boa menino, primeiro trata das tuas cenas

ya o que eu quero é que ele crie pastas.

e so trabalho k o meu prof da lolol

kando souberes alguma koisa dix, eu vou tentando

abraço  :cheesygrin:


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Share this post


Link to post
Share on other sites
peste

boas thoga, como t prometi kuando tivexe ele feito mandava para aqui o programa

graças a este programa tirei 19 na PAT.

program projetoimagem;
uses crt, dos;
var a,b: text;
   c:string;

   d,e:text;
   f:string;

   k,m:text;
   o:string;

   s,q:text;
   r:string;

   pc,comc,comr,comm,com1,com2,com3,com4:string;

   n,p,i,op:integer;


begin
   repeat
   writeln('Qual o computador ou sala que quer adicionar');
   readln(pc);
   assign (a,'/tftpboot/ficheirosaux/pxeboot.msg.conf');
   assign (b,'/tftpboot/pxeboot.msg');
   assign (d,'/tftpboot/ficheirosaux/default.conf');
   assign (e,'/tftpboot/pxelinux.cfg/default.conf');
   reset(a);
   append(b);
   reset(d);
   append(e);
   com1:='/tftpboot/script/script_';
   com2:='_criar';
   com3:='_recuperar';
   com4:='/mnt/samba/partilha/';
   comc:=com1+pc+com2;
   comr:=com1+pc+com3;
   comm:=com4+pc;

   MkDir(comc);
   MkDir(comr);   
   MkDir(comm);
   writeln('Adicione agora as permissoes a pasta com o seguinte comando');
   writeln('chmod 777 /tftpboot/script/ -R');
   writeln('Depois de terminado prima enter');
   readln;
   assign (k,'/tftpboot/ficheirosaux/autorun.criar');
   reset(k);
   assign (m,'/tftpboot/script/script_'+pc+'_criar/autorun');
   rewrite(m);
   assign (s,'/tftpboot/ficheirosaux/autorun.recuperar');
   reset(s);
   assign (q,'/tftpboot/script/script_'+pc+'_recuperar/autorun');
   rewrite(q);
//********************************************************************
       while NOT eoln(a) do
       begin
               readln (a,c);
               n:=length(c);
               for i:=1 to n do
               begin
               if (c[i]='*') then
                       begin
                               p:=pos('*',c);
                          delete(c,p,1);
                          insert(pc,c,p);
               end;
               end;
               writeln(b,c);
               append(b);
   end;
//********************************************************************
       while NOT eof(d) do
       begin
               readln (d,f);
               n:=length(f);
               for i:=1 to n do
               begin
               if (f[i]='*') then
                       begin
                               p:=pos('*',f);
                          delete(f,p,1);
                          insert(pc,f,p);
               end;
               end;
               writeln(e,f);
               append(e);
   end;
//********************************************************************
       while NOT eof(k) do
       begin
               readln (k,o);
               n:=length(o);
               for i:=1 to n do
               begin
               if (o[i]='*') then
                       begin
                               p:=pos('*',o);
                          delete(o,p,1);
                          insert(pc,o,p);
               end;
               end;
               writeln(m,o);
               append(m);
   end;
//*******************************************************************
       while NOT eof(s) do
       begin
               readln (s,r);
               n:=length(r);
               for i:=1 to n do
               begin
               if (r[i]='*') then
                       begin
                               p:=pos('*',r);
                          delete(r,p,1);
                          insert(pc,r,p);
               end;
               end;
               writeln(q,r);
               append(q);
   end;
//******************************************************************
   close(a);
   close(b);
   close(d);
   close(e);
   close(k);
   close(m);
   close(s);
   close(q);
   writeln('Deseja inserir MAIS algum pc? se não introduza o numero 0, se sim insira um numero diferente de 0');
   readln(op);
   until (op=0);
   writeln('Prima ENTER para sair');
   readln;
end.
 

tem haver com o servidor PXE, servidor samba de reposiçao de imagens.

A finalidade dele é evitar a configuração manual dos ficheiros do servidor de PXE. Assim evita-se que a inserção de um novo computador no servidor seja realizada manualmente e previne a falha de alguma inserção de dados errada.

O programa faz automaticamente que um dado computador possa realizar uma imagem e posteriormente seja possível realizar a respectiva reposição de imagem.

Para que se possa realizar uma cópia e uma reposição de um novo PC para o servidor de imagens, é necessário realizar as seguintes configurações nos :

a) Alterar os seguintes ficheiros:

/tftpboot/pxeboot.msg  o ficheiro ”pxeboot.msg” contém o menu de arranque com instruções. Quando se pretende fazer uma imagem ou repor uma imagem num PC, este menu surge a indicar qual a opção que deve seleccionar.

/tftpboot/pxelinux.cfg/default  Ficheiro ”default” que contém a configuração de Arranque dos Clientes

/tftpboot/script/script_pcnumero_copiar/autorun  Ficheiro “autorun” que monta localmente a pasta partilhada pelo servidor nos PC’s Clientes e faz a cópia das partições do PC e guardo no servidor

/tftpboot/script/script_pcnumero_recuperar/autorun  Ficheiro “autorun” que monta localmente a pasta partilhada pelo servidor nos PC’s Clientes e repõem as partições para o PC a partir das imagens guardadas no servidor.

b) Criar as seguintes directorias:

/tftpboot/script/script_pcnumero_copiar  pasta que contém o ficheiro “autorun”. Têm que existir uma pasta “copiar” por cada imagem diferente.

/tftpboot/script/script_pcnumero_recuperar  pasta que contém o ficheiro “autorun”. Têm que existir uma pasta “recuperar” por cada imagem diferente.

/mnt/partilha/pcnumero -> pasta onde será guardada a imagem do PC. Quando se dá ordem de reposição de uma imagem o sistema vem a esta pasta buscar a imagem para repor no pc.

Nome do programa:

program projetoimagem;

É o nome de programa.

Bibliotecas:

uses crt, dos;

São bibliotecas que se pode adicionar no programa, a biblioteca crt serve garantir o funcionamento das funções Read(ln) e Write(ln).

Em certos compiladores essa biblioteca já é integrada previamente, não precisando declara-la.

A biblioteca dos é para usar comandos do MS-DOS ou Unix.

Declaração de variáveis para os ficheiros:

var a,b: text;
c:string;
d,e:text;
f:string;
k,m:text;
o:string;
s,q:text;
r:string;
 

Estas variáveis que são do tipo text, que irão servir para manipular os ficheiros.

As variáveis a, d, k e s, irão conter a informação dos ficheiros originais, e as variáveis b, e, m e q irão conter a informação que já alterada, que depois irá adicionar conteudo nos ficheiros que já estão criados, ou que irão ser criados.

As variáveis c, f, o e r, que são do tipo string, irão ter a função de ler o ficheiro carácter a carácter, e ai já vão alterar o asterisco (*), para o nome do pc ou sala.

Declaração de variáveis para os comandos e do pc que vai ser inserido:

pc,comc,comr,comm,com1,com2,com3,com4:string;

Estas variáveis do tipo string vão ter funções quase iguais, só muda o conteúdo.

As variáveis comc, comm, comcr, com1, com2, com3, com4 servem para a parte do programa que vai criar as directorias.

A variável pc irá conter a informação introduzida pelo utilizador, do pc ou da sala que vai ser neste programa a variável “principal”, porque é ela que vai definir as configurações dos ficheiros.

Declaração de variáveis inteiras:

n,p,i,op:integer;

Estas três variáveis n, p e i, do tipo inteiro irão ser utilizadas na manipulação de ficheiros, e a variável op irá servir para o utilizador confirmar se quer sair do programa, ou continuar a introduzir pcs ou salas.

Inicio do programa:

begin

É aqui que começa o programa em si.

Ciclo de repetição:

repeat

Está instrução serve para o que tiver dentro dela, ir repetindo ate que a opção se um valor predefinido, neste caso ate que seja 0.

Introdução do pc ou sala:

writeln('Qual o computador ou sala que quer adicionar');

readln(pc);

Nestas instruções vai ser apresentada a mensagem ao utilizador para ele adicionar o computador ou a sala que deseja.

Associação dos ficheiros as variáveis:

assign (a,'/tftpboot/ficheirosaux/pxeboot.msg.conf');
assign (b,'/tftpboot/pxeboot.msg');
assign (d,'/tftpboot/ficheirosaux/default.conf');
assign (e,'/tftpboot/pxelinux.cfg/default.conf');
reset(a);
append(b);
reset(d);
append(e);
 

Nas primeiras 4 linhas o programa associa os ficheiros originais e os ficheiros que irão ser alterados.

O conteúdo dos ficheiros originais vai ficar nas variáveis a e c, onde o reset vai permitir a leitura dos conteúdo.

No append serve para depois ser adicionado no final do ficheiros a conteúdo dos ficheiros originais com o asterisco (*) alterado pela variável pc.

Criação das directorias:

com1:='/tftpboot/script/script_';
com2:='_criar';
com3:='_recuperar';
com4:='/mnt/samba/partilha/';
comc:=com1+pc+com2;
comr:=com1+pc+com3;
comm:=com4+pc;
MkDir(comc);
MkDir(comr);   
MkDir(comm);
 

As variáveis com1, com2, com3, com4, já têm um valor predefinido.

Mas as variáveis comc, comr, comm, vão ser a junção das outras variáveis.

A instrução MkDir vai criar as directorias que estão nas strings comc, comr, comm. Por exemplo, no MkDir(comm); ele vai criar a directoria /mnt/samba/partilha/pcteste.

Permissões:

writeln('Adicione agora as permissoes a pasta com o seguinte comando');
writeln('chmod 777 /tftpboot/script/ -R');
writeln('Depois de terminado prima enter');
readln;
 

Está parte do programa é muito essencial, devido, as permissões que temos de adicionar para o programa poder adicionar os ficheiros nas pastas que foram criadas na pasta script. Normalmente só deve ser preciso adicionar na primeira vez que compilamos o programa, depois já deve funcionar mas sem ser preciso adicionar os ficheiros. O readln pára o programa até o utilizador carregar a tecla ENTER para poder continuar.

Associação de ficheiros as variáveis:

assign (k,'/tftpboot/ficheirosaux/autorun.criar');
reset(k);
assign (m,'/tftpboot/script/script_'+pc+'_criar/autorun');
rewrite(m);
assign (s,'/tftpboot/ficheirosaux/autorun.recuperar');
reset(s);
assign (q,'/tftpboot/script/script_'+pc+'_recuperar/autorun');
rewrite(q);
 

Esta associação de ficheiros as variáveis, é igual a anterior, só com a diferença de, em vez de existir o comando append, existe o comando rewrite.

As variáveis k e s, irão conter o conteúdo dos ficheiros originais.

Já as variáveis m e q irão adicionar o contudo dos ficheiros originais nos ficheiros criados

Alteração dos ficheiros:

//********************************************************************
while NOT eoln(a) do
begin
readln (a,c);
n:=length(c);
for i:=1 to n do
begin
if (c[i]='*') then
begin
p:=pos('*',c);
delete(c,p,1);
insert(pc,c,p);
end;
end;
writeln(b,c);
append(b);
end;
//********************************************************************
while NOT eof(d) do
begin
readln (d,f);
n:=length(f);
for i:=1 to n do
begin
if (f[i]='*') then
begin
p:=pos('*',f);
delete(f,p,1);
insert(pc,f,p);
end;
end;
writeln(e,f);
append(e);
end;
//********************************************************************
while NOT eof(k) do
begin
readln (k,o);
n:=length(o);
for i:=1 to n do
begin
if (o[i]='*') then
begin
p:=pos('*',o);
delete(o,p,1);
insert(pc,o,p);
end;
end;
writeln(m,o);
append(m);
end;
//*******************************************************************
while NOT eof(s) do
begin
readln (s,r);
n:=length®;
for i:=1 to n do
begin
if (r[i]='*') then
begin
p:=pos('*',r);
delete(r,p,1);
insert(pc,r,p);
end;
end;
writeln(q,r);
append(q);
end;
//******************************************************************
 

Aqui é onde se vai dar a cópia, e alterações dos ficheiros.

A instrução while NOT eoln(a) do, vai ser um ciclo de repetição que vai percorrer a variável a até que seja fim de linha.

Nas outras usei while NOT eof(a) do, devido ao conteúdo do ficheiro, porque era maior que o da variável a. Vai na mesma ocorrer o ciclo de repetição, só que em vez ser só até ao fim de linha, vai ser até ao fim do ficheiro, e vai ocupar mais memória.

O readln, indica o ficheiro de onde os dados são lidos.

O length, indica o tamanho do ficheiro.

Depois existe um ciclo de repetição, e dentro desse ciclo ele vai procurar o asterisco (*), e depois altera-o para o conteúdo da variável pc.

O pos, indica a posição do asterisco (*) e fica guardado na variável p.

O delete, apaga um valor na posição p.

O insert, vai inserir o conteúdo da variável pc, na posição p.

O writeln, indica o ficheiro onde os resultados vão ser escritos.

Depois o append vai inserir no final do ficheiro o conteúdo que está na variável c.

Fechar os ficheiros:

close(a);
close(b);
close(d);
close(e);
close(k);
close(m);
close(s);
close(q);
 

O comando close serve para encerrar os ficheiros que foram abertos anteriormente.

Confirmação para sair:

writeln(‘Deseja inserir MAIS algum pc? se não introduza o numero 0, se sim insira um numero diferente de 0’);
readln(op);
until (op=0);
writeln('Prima ENTER para sair');
readln;
 

Aqui é apresentado ao utilizador a mensagem, que se deseja sair, para introduzir o número 0, se não introduz outro número.

Depois o comando until (op=0), é para encerrar o ciclo de repetição repeat que esta no inicio do programa.

Só quando o número introduzido pelo utilizador for 0, o ciclo de repetição é encerrado. Depois aparece uma mensagem para carregar no ENTER para podermos sair do programa.

O readln serve para dar uma pausa no programa, e para apresentar a mensagem final, porque as vezes existe mensagens, que antes de acabar o programa não são apresentadas, e com o readln já são impridas.

Fim do programa:

end.

Encerra o programa principal.

No programa elaborado no Free Pascal não ficou todo completo, quer dizer, ele faz o que foi pedido, que era modificar os ficheiros e criar directorias, mas com um bocadinho mais de tempo e mais alguma procura de informação podia ter um ambiente gráfico, no qual podia-se usar o Lazarus, que utiliza o Free Pascal como compilador.

Também podia conter um menu para poder apagar o computador ou sala adicionados, e assim apagava as directorias e linhas dos ficheiros que foram adicionados aos ficheiros.

ja agoa um muito obrigado thoga, ajusdas-te bues :D

abraço....


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.