Ir para o conteúdo
  • 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

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Boas!  :ipool:

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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Boas peste! (lool) :ipool:

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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Boas peste! :ipool:

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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.