Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

orc

[Resolvido] Arquivo de Texto

Recommended Posts

Bom Dia ,

tenho um probleminha e gostaria da ajuda dos amigos para resolve-lo, tenho um arquivo de texto gigantesco onde tem todod tipo de informação das quais as que necessito estão em blocos delimitando seu inicio e seu fim por inicio $$$ e fim $$ e com esses blocos tenho a necessidade de copia-los e criar outro arquivo de texto e coloca-los dentro e assim por diante com os outros blocos existentes neste arquivo, só que estou tb preocupado pq dentro de cada bloco dentro desse arquivo tb tem outras informações que tenho que pegar na mesma hora em que pego o bloco para adicionar a outro arquivo, gostaria da ajuda dos amigos pra saber como faço isso ?

 

 

http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso acho que você pode usar como base o exemplo daquele outro tópico, no caso você pega um bloco de informações, separa ele em um RichEdit e fica trabalhando com ele, pode criar uma função para cada tipo de informação que deseja remover de dentro do bloco, facilitando assim a manutenção...

E no caso você pode fazer que quando ele separar um bloco do primeiro RichEdit, ele remove este bloco do mesmo, para que seja possível avançar para os próximos, acho que consegue fazer a verificação com Repeat... Until...

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso acho que você pode usar como base o exemplo daquele outro tópico, no caso você pega um bloco de informações, separa ele em um RichEdit e fica trabalhando com ele, pode criar uma função para cada tipo de informação que deseja remover de dentro do bloco, facilitando assim a manutenção...E no caso você pode fazer que quando ele separar um bloco do primeiro RichEdit, ele remove este bloco do mesmo, para que seja possível avançar para os próximos, acho que consegue fazer a verificação com Repeat... Until...

Marcio preciso de mais uma ajudinha nisso fiz essa parte do rich edit agora tenho um problema, dentro do bloco em que vou trabalahar tem informações mais elas não estão dispostas uniformente vou mostrar um pedaço do arquivo e gostaria de uma sugestão sua :preciso jogar para um arquivo em separado esses blocos que iniciam nessa numeração e terminam no fechar aspas como posso fazer isso ?é um arquivo imenso com essa kara ai

2001.61.00.005355-1 . PADRE GIORDANO COML/ E EDUCACIONAL LTDA (ADV. SP063927 MARIA CRISTINA DE MELO) X UNIAO FEDERAL (PROCURAD SEM PROCURADOR) “...Diante do exposto e de tudo mais que dos autos consta, JULGOIMPROCEDENTE o pedido, com o que extingo o processo com resolução de mérito,com fundamento no artigo 269, inciso I, do Código de Processo Civil. Custas naforma da lei. Condeno a parte autora ao pagamento de honorários advocatíciosem 10% sobre o valor atribuído à causa, devidamente atualizados por ocasião dopagamento...” 2001.61.00.006719-7 . CENTRO CULTURAL JARDIM FRANCA S/C LTDA (ADV. SP063927 MARIA CRISTINA DE MELO) X UNIAO FEDERAL (PROCURAD SEM PROCURADOR) “...Diante do exposto e de tudo mais que dos autos consta, JULGOIMPROCEDENTE o pedido, com o que extingo o processo com resolução de mérito,com fundamento no artigo 269, inciso I, do Código de Processo Civil. Custas naforma da lei. Condeno a parte autora ao pagamento de honorários advocatíciosem 10% sobre o valor atribuído à causa, devidamente atualizados por ocasião dopagamento...”

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendo, mas no caso neste momento que separou, teria de chamar a função para verificar estas Aspas, e assim ir separando, poderia criar um TStringList virtual e ir acrescentando neste o que encontrar...No caso do seu exemplo...Ele iria procurar pelo primeiro bloco de aspas, depois que achou, adicionar no TStringList...Depois ele procura a partir da última aspas encontrada no bloco anterior, achando assim o próximo... e assim vai fazendo, adicionando e seguinte em frente...Depois no final vai ter um TStringList com as informações de que precisa...

Compartilhar este post


Link para o post
Compartilhar em outros sites

surgiu outra duvida Marcio, como eu faço : por exemplo peguei esse bloco maior cheio de bloquinos de arquivo dentro dele, como faço pra passar para o proximo ??? eu carrego o bloco maior dentro do richedit depois como faço pra ir passando para dar next para ir para os outros blocos ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você faz o Find, ele tem um início e fim, são variáveis do tipo integer, no caso para ir para o próximo teria de pegar o fim da antiga e somar + n° de caracteres a buscar e seta para ser início da busca do próximo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você faz o Find, ele tem um início e fim, são variáveis do tipo integer, no caso para ir para o próximo teria de pegar o fim da antiga e somar + n° de caracteres a buscar e seta para ser início da busca do próximo...

marcio queria saber como eu faço isso agindo como se fosse um while pq pelo que entendi ele vai fazer essa leitura somente uma vez , como ele voltaria para traz pra continuar a leitura como se fosse um while ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu pensei em fazer usando Repeat... until... ou seja, ele fica repetindo até que uma condição seja satisfeita...

marcio num entendi não você num pode dar um exemplo , por favor, sem querer abusar da sua boa vontade ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Repeat   if  vPosFim > 0  then	  begin		vposIni	 := RichEdit2.FindText('”', 0 , length( RichEdit2.Text ),[]) + 2;		 // Posição Inicial do Digito Verificador		vposFim	 := RichEdit2.FindText('”' , vposIni + 2, length( RichEdit2.Text ),[]);   // Posição Final do Digito Verificador		vProcesso   := Pedaco( RichEdit2.Text, vposIni, vposFim );		ShowMessage(vProcesso);		vPosIni := vPosFim;	  end;   until	  vPosFim = 0;

fiz assim mais ele sempre volta para o mesmo registro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Montei da seguinte forma:

 

procedure TForm1.BitBtn1Click(Sender: TObject);var	vPosIni, vPosFim, ultimaPosIni: integer;	vProcesso: string;	function Pedaco(str: string; posIni, posfim: integer):string;	var		s: string;		x: integer;	begin	s:='';	for x:=posIni to posFim do		begin		if length(str) >= x then			s:=s + str[x];		end;	Pedaco:=Trim(s);	end;beginvPosIni:=0;vPosFim:=0;ultimaPosIni:=0;repeat	vposIni:=RichEdit1.FindText('”',vposIni,length(RichEdit1.Text ),[]) + 2;	vposFim:=RichEdit1.FindText('”',vposIni + 2,length(RichEdit1.Text),[]);	if (vPosIni >= ultimaPosIni) then		begin		vProcesso:=Pedaco(RichEdit1.Text,vposIni,vposFim);		if vProcesso <> '' then			ShowMessage(vProcesso);		ultimaPosIni:=vPosIni;		vPosIni:=vPosFim + 2;		end	else		vPosFim:= -1;until vPosFim = -1;end;

Precisa somente adaptar a sua necessidade...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Montei da seguinte forma:

procedure TForm1.BitBtn1Click(Sender: TObject);var	vPosIni, vPosFim, ultimaPosIni: integer;	vProcesso: string;	function Pedaco(str: string; posIni, posfim: integer):string;	var		s: string;		x: integer;	begin	s:='';	for x:=posIni to posFim do		begin		if length(str) >= x then			s:=s + str[x];		end;	Pedaco:=Trim(s);	end;beginvPosIni:=0;vPosFim:=0;ultimaPosIni:=0;repeat	vposIni:=RichEdit1.FindText('”',vposIni,length(RichEdit1.Text ),[]) + 2;	vposFim:=RichEdit1.FindText('”',vposIni + 2,length(RichEdit1.Text),[]);	if (vPosIni >= ultimaPosIni) then		begin		vProcesso:=Pedaco(RichEdit1.Text,vposIni,vposFim);		if vProcesso <> '' then			ShowMessage(vProcesso);		ultimaPosIni:=vPosIni;		vPosIni:=vPosFim + 2;		end	else		vPosFim:= -1;until vPosFim = -1;end;
Precisa somente adaptar a sua necessidade...
totalmente redondissima adaptei aqui ficou muito boa muito mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.