Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Ler um arquivo TXT e gerar vários arquivos de saída


Fernando Fontes
 Share

Question

5 answers to this question

Recommended Posts

  • 0

Olá Jhonas,

Separei um pedaço do arquivo em que ocorrerem 4 quebras:

SEQ;ZONA;SECAO;ELEITOR;TITULO;PAGS
001;001;0001;ADELAR DOS SANTOS;000000303/53;01
002;001;0001;AIRES FRANCISCO DE OLIVEIRA;744128103/70;01
003;001;0001;ALEXANDRE FONTOURA DE OLIVEIRA;699842503/53;01
001;001;0002;ADRIANA BARBOZA XAVIER;1252645403/29;01
002;001;0002;ALAN MICHEL CASTRO DE OLIVEIRA;1225138903/45;01
003;001;0002;ALESSANDRO FERREIRA DA SILVA;1298956103/02;01
004;001;0002;ALICE MESQUITA COSTA;1578264703/37;01
001;002;0001;ABRAHAM SALEM;000050203/96;01
002;002;0001;ADAILTON SILVA REGO;727999103/96;01
003;002;0001;ADAIR DIAS DA SILVA;000050303/70;01
004;002;0001;ADERSON MONTEIRO JUNIOR;734925703/45;01
005;002;0001;ADILSON DE ALMEIDA LEMOS;000050603/10;01
001;002;0004;ADAIR DA SILVA ALMEIDA;000078903/70;01
002;002;0004;ADALBERTO GOMES DE BRITO;000079003/02;01
003;002;0004;ADELINA ALMEIDA;000079303/53;01
004;002;0004;ADELINA DA COSTA JUNQUEIRA;000079403/37;01

 

O que preciso, com os dados acima é gerar vários arquivos de saída e identificados pelos campos Zona e Seção:

Z001S0001.txt, Z001S0002.txt, Z002S001.txt e Z002S004.txt

 

Desde já agradeço!

Link to comment
Share on other sites

  • 0

ok...  entendi que o nome de saida do arquivo seria assim:

Z001S0001.txt

Z001S0002.txt

agora coloque como voce quer o conteudo do arquivo txt

Separei um pedaço do arquivo em que ocorrerem 4 quebras:

001;    001;    0001;    ADELAR DOS SANTOS;    000000303/53;   01   ( seriam 6 campos )

cada quebra pode ser representada pelo ( ; ponto e virgula )

quais campos voce quer como conteudo do arquivo ?  cada linha seria um arquivo ?

abraço

Link to comment
Share on other sites

  • 0

Ok, vamos lá!

O primeiro arquivo seria Z001S001.txt (quebrando no campo "Zona" = 001 e campo "Seção" = 001)

001;001;0001;ADELAR DOS SANTOS;000000303/53;01
002;001;0001;AIRES FRANCISCO DE OLIVEIRA;744128103/70;01
003;001;0001;ALEXANDRE FONTOURA DE OLIVEIRA;699842503/53;01

O segundo seria Z001S002.txt (quebrando no campo "Zona" = 001 e campo "Seção" = 002) - mudou a Seção

001;001;0002;ADRIANA BARBOZA XAVIER;1252645403/29;01
002;001;0002;ALAN MICHEL CASTRO DE OLIVEIRA;1225138903/45;01
003;001;0002;ALESSANDRO FERREIRA DA SILVA;1298956103/02;01
004;001;0002;ALICE MESQUITA COSTA;1578264703/37;01

O terceiro seria Z002S001.txt (quebrando no campo "Zona" = 002 e campo "Seção" = 001) - mudou a Zona

001;002;0001;ABRAHAM SALEM;000050203/96;01
002;002;0001;ADAILTON SILVA REGO;727999103/96;01
003;002;0001;ADAIR DIAS DA SILVA;000050303/70;01
004;002;0001;ADERSON MONTEIRO JUNIOR;734925703/45;01
005;002;0001;ADILSON DE ALMEIDA LEMOS;000050603/10;01

O quarto seria Z002S004.txt (quebrando no campo "Zona" = 002 e campo "Seção" = 004) - mudou a Zona

001;002;0004;ADAIR DA SILVA ALMEIDA;000078903/70;01
002;002;0004;ADALBERTO GOMES DE BRITO;000079003/02;01
003;002;0004;ADELINA ALMEIDA;000079303/53;01
004;002;0004;ADELINA DA COSTA JUNQUEIRA;000079403/37;01

São 6 campos separados por ; e os 3 primeiros tem tamanhos fixos (Seq=3, ZOna=3 e Seção=4)

Grato,

 
Link to comment
Share on other sites

  • 0

ok ...  segue o programa

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Arquivo : TextFile;
  Arquivo1 : TextFile;
  Line : string;
  num : integer = 0;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var S, VS, LINHA : string;
    SEQ,ZONA,SECAO,ELEITOR,TITULO,PAGS : string;

begin
  Edit1.Clear;
  Edit2.Clear;

  AssignFile(Arquivo, 'C:\Arquivo.Txt');
  Reset(Arquivo);
  while not EOF(Arquivo) do
  begin

    ReadLn(Arquivo, Line);
    Memo1.Lines.add( Line ); // Usado apenas para controle
    S := trim(Line);
    LINHA := '';
    LINHA := S;
    num := 0;

    while Pos(';', S) > 0 do
       begin
          inc(num);
          S[Pos(';', S)] := '#';
          vs := copy(s,1,Pos('#', S)-1);
          delete(s,1,Pos('#', S));
          case num of
            1: SEQ := VS;
            2: ZONA := VS;
            3: SECAO := VS;
            4: ELEITOR := VS;
            5: TITULO := VS;
            6: begin
                 vs := copy(s,1,5);
                 PAGS := VS;
                 delete(s,1,5);
                 num := 0;
               end;
          end;

       end;

   if  Edit1.Text <> ZONA then
    begin
       Edit1.Text := ZONA;
       Edit2.Text := SECAO;
       Edit1.Refresh;
       Edit2.Refresh;

       if not(fileexists('C:\'+'Z'+ZONA+'S'+SECAO + '.txt')) then
          begin
             AssignFile(Arquivo1, 'C:\'+'Z'+ZONA+'S'+SECAO + '.txt');
             Rewrite(Arquivo1);
             Writeln(Arquivo1, LINHA);
             CloseFile(Arquivo1);
          end
       else
          begin
             AssignFile(Arquivo1, 'C:\'+'Z'+ZONA+'S'+SECAO + '.txt');
             Append(Arquivo1);
             Writeln(Arquivo1, LINHA);
             CloseFile(Arquivo1);
          end;
    end
  else
    begin
       Edit1.Text := ZONA;
       Edit2.Text := SECAO;
       Edit1.Refresh;
       Edit2.Refresh;

       if not(fileexists('C:\'+'Z'+ZONA+'S'+SECAO + '.txt')) then
          begin
             AssignFile(Arquivo1, 'C:\'+'Z'+ZONA+'S'+SECAO + '.txt');
             Rewrite(Arquivo1);
             Writeln(Arquivo1, LINHA);
             CloseFile(Arquivo1);
          end
       else
          begin
             AssignFile(Arquivo1, 'C:\'+'Z'+ZONA+'S'+SECAO + '.txt');
             Append(Arquivo1);
             Writeln(Arquivo1, LINHA);
             CloseFile(Arquivo1);
          end;

    end;

  end;
  CloseFile(Arquivo);

  SHOWMESSAGE('PROCESSO CONCLUIDO!');

end;

end.

 

abraço

Edited by Jhonas
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...