Ir para conteúdo
Fórum Script Brasil
  • 0

Me Ajudem


Dedao

Pergunta

Ola a todos!

tenho um problema q não consigo resolver!

Estou fazendo um programa q ele tem q pegar um arquivo texto e separar ele por letras (a ponto de separar palavra por palavra num array), então o que foi q eu fiz quando o programa encontrar um espaço ou um tab ele bota a sentença como falsa, e não joga o espaço vazio dentro do array.

Mas estou caindo num problema , não consigo fazer o programa pular de linha , ou seja ele repete a 1ª linha até o fim , apesar de ler todas!eu leio todas as linhas mas só imprimo a 1ª repetidas vezes, até o fim do arquivo!

vou colocar o codigo aqui.

var

Form1: TForm1;

Reg,j:String;

ArquivoE, ArquivoS:text;

Campos:Array[1..7] of String;

k,i,l :integer;

implementation

{$R *.DFM}

procedure TForm1.SepararClick(Sender: TObject);

var

c: byte;

temp:String;

begin

c:=1;

K:=1;

l:=Length(Reg); //aki ele pega o tamanho da linha

While i < l do

begin

j:= copy(Reg,c,1); //aki ele copia a letra e joga dentro de J

//Readln(J);

if j <> #9 then //se J for Diferente de tab

begin

if j <> ' ' then //se J for diferente de espaço

begin

Campos[k]:=Campos[k]+j; //guarda a letra(No caso J)

//no campos K, k só vai variar quando

end; //for = a espaço ou tab

end

else

begin

if Campos[k] <> '' then

k:=k+1;

end;

Inc©;

Inc(i);

end;

end;

procedure TForm1.AbrirClick(Sender: TObject);

begin

If OpenDialog1.Execute Then

begin

AssignFile(ArquivoE, OpenDialog1.FileName); //aqui é o botao pra abrir o arq.

Reset(ArquivoE);

Readln(ArquivoE, Reg);

end;

end;

procedure TForm1.SalvarClick(Sender: TObject);

begin

K:=1;

If saveDialog1.Execute then

begin

AssignFile(ArquivoS, SaveDialog1.FileName); //aqui ele salva o arquivo

Rewrite(ArquivoS);

While not EOF(ArquivoE) do //essa parte estou com duvida nela!

begin //como pego o array q eu fiz e ...

//coloco num arquivo texto novo?

Readln(ArquivoE, Reg);

end;

end;

//CloseFile(ArquivoS);

CloseFile(ArquivoE);

end;

end.

Se alguém peloamor de deus poder me ajudar eu ficarei muito grato blink.gifblink.gifblink.gifblink.gif

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Bom,encontramos alguns problemas...

1 - Seu array parece muito pequeno para um arquivo de texto,procure na internet alguma funcao para setar o tamanho do array em tempo de execucao (ARRAY DINAMICO)

2 - Para salvar o arquivo é so fazer um for lendo o array do zero

var

Arquivo : TFile;

begin

Assign(Arquivo,'Nome do Arquivo');

reset(arquivo)

for i := 0 to tamanhodoarray then

writeln(arquivo,array);

closefile(arquivo);

end;

Link para o comentário
Compartilhar em outros sites

  • 0

acho q não ficou muito claro!

o meu texto terá sempre 7 palavras por linha.

O problema é q no meu programa eu não consigo pular para a linha de baixo a variavel reg pula para a linha de bixo porem ela não passa para o writeln , não sei porque!

um exemplo

tenho um texto assim

blalbla(3espaços)blalbalbla(2 tabs)blalbalbla(1tab)bliblibli

e tenho q transformar esse texto pra isso

blabla(1espaço)blalbalbla(1sapeço)blablablabla(1espaço)bliblibli

entenderam , mas só q tenho q fazer isso pra todas as linhas!porem o progrma só faz para a primeira e repete-a até o final do tamanho do arquivo.

Link para o comentário
Compartilhar em outros sites

  • 0

Faça num único evento:

var ArquivoE,ArquivoS:TextFile; i,j:Integer; sE,sS,sW:String;
begin
  AssignFile(ArquivoE, OpenDialog1.FileName); //aqui é o botao pra abrir o arq.
  Reset(ArquivoE);
  AssignFile(ArquivoS, OpenDialog1.FileName); //aqui é o botao pra abrir o arq.
  Rewrite(ArquivoS);
  While not Eof(ArquivoE) do
  begin
    Readln(ArquivoE, sE);
    sS := '';
    sW := '';
    for i := 1 to Length(sE) do
      if sE[i] in [' ', #9] then
      begin
        if sW <> '' then
          if sS <> '' then
            sS := sS + ' ' + sW
          else
            sS := sW;
        sW := '';
        Continue;
      end
      else
        sW := sW + sE[i];
    if sW <> '' then
      if sS <> '' then
        sS := sS + ' ' + sW
      else
        sS := sW;
    Writeln(ArquivoS, sS);
  end;
  CloseFile(ArquivoE);
  CloseFile(ArquivoS);
end;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...