Fernando Fontes Postado Novembro 16, 2015 Denunciar Share Postado Novembro 16, 2015 Olá, boa tarde!Tenho um TXT com quase 5 milhoes de linhas e preciso gerar "N" arquivos de saída, baseado em 2 campos.Ao todos, deverão ser mais de 11.600 arquivos de saída. Alguém pode me dar uma dica de como é possível fazer isso?Os campos são de tamanho fixo: ZONA = 999 e SEÇÃO = 9999Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 16, 2015 Denunciar Share Postado Novembro 16, 2015 coloque umas 10 linhas de exemplo, do arquivo txte mostre exatamente o que esta querendo no arquivo de saidaabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fernando Fontes Postado Novembro 16, 2015 Autor Denunciar Share Postado Novembro 16, 2015 Olá Jhonas,Separei um pedaço do arquivo em que ocorrerem 4 quebras:SEQ;ZONA;SECAO;ELEITOR;TITULO;PAGS001;001;0001;ADELAR DOS SANTOS;000000303/53;01002;001;0001;AIRES FRANCISCO DE OLIVEIRA;744128103/70;01003;001;0001;ALEXANDRE FONTOURA DE OLIVEIRA;699842503/53;01001;001;0002;ADRIANA BARBOZA XAVIER;1252645403/29;01002;001;0002;ALAN MICHEL CASTRO DE OLIVEIRA;1225138903/45;01003;001;0002;ALESSANDRO FERREIRA DA SILVA;1298956103/02;01004;001;0002;ALICE MESQUITA COSTA;1578264703/37;01001;002;0001;ABRAHAM SALEM;000050203/96;01002;002;0001;ADAILTON SILVA REGO;727999103/96;01003;002;0001;ADAIR DIAS DA SILVA;000050303/70;01004;002;0001;ADERSON MONTEIRO JUNIOR;734925703/45;01005;002;0001;ADILSON DE ALMEIDA LEMOS;000050603/10;01001;002;0004;ADAIR DA SILVA ALMEIDA;000078903/70;01002;002;0004;ADALBERTO GOMES DE BRITO;000079003/02;01003;002;0004;ADELINA ALMEIDA;000079303/53;01004;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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 16, 2015 Denunciar Share Postado Novembro 16, 2015 ok... entendi que o nome de saida do arquivo seria assim:Z001S0001.txtZ001S0002.txtagora coloque como voce quer o conteudo do arquivo txtSeparei 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fernando Fontes Postado Novembro 16, 2015 Autor Denunciar Share Postado Novembro 16, 2015 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;01002;001;0001;AIRES FRANCISCO DE OLIVEIRA;744128103/70;01003;001;0001;ALEXANDRE FONTOURA DE OLIVEIRA;699842503/53;01O segundo seria Z001S002.txt (quebrando no campo "Zona" = 001 e campo "Seção" = 002) - mudou a Seção001;001;0002;ADRIANA BARBOZA XAVIER;1252645403/29;01002;001;0002;ALAN MICHEL CASTRO DE OLIVEIRA;1225138903/45;01003;001;0002;ALESSANDRO FERREIRA DA SILVA;1298956103/02;01004;001;0002;ALICE MESQUITA COSTA;1578264703/37;01O terceiro seria Z002S001.txt (quebrando no campo "Zona" = 002 e campo "Seção" = 001) - mudou a Zona001;002;0001;ABRAHAM SALEM;000050203/96;01002;002;0001;ADAILTON SILVA REGO;727999103/96;01003;002;0001;ADAIR DIAS DA SILVA;000050303/70;01004;002;0001;ADERSON MONTEIRO JUNIOR;734925703/45;01005;002;0001;ADILSON DE ALMEIDA LEMOS;000050603/10;01O quarto seria Z002S004.txt (quebrando no campo "Zona" = 002 e campo "Seção" = 004) - mudou a Zona001;002;0004;ADAIR DA SILVA ALMEIDA;000078903/70;01002;002;0004;ADALBERTO GOMES DE BRITO;000079003/02;01003;002;0004;ADELINA ALMEIDA;000079303/53;01004;002;0004;ADELINA DA COSTA JUNQUEIRA;000079403/37;01São 6 campos separados por ; e os 3 primeiros tem tamanhos fixos (Seq=3, ZOna=3 e Seção=4)Grato, Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 16, 2015 Denunciar Share Postado Novembro 16, 2015 (editado) ok ... segue o programaunit Unit1;interfaceuses 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 Editado Novembro 16, 2015 por Jhonas Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Fernando Fontes
Olá, boa tarde!
Tenho um TXT com quase 5 milhoes de linhas e preciso gerar "N" arquivos de saída, baseado em 2 campos.
Ao todos, deverão ser mais de 11.600 arquivos de saída. Alguém pode me dar uma dica de como é possível fazer isso?
Os campos são de tamanho fixo: ZONA = 999 e SEÇÃO = 9999
Obrigado.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.