orc 0 Denunciar post Postado Setembro 28, 2007 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
marcio.theis 3 Denunciar post Postado Setembro 28, 2007 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
orc 0 Denunciar post Postado Setembro 28, 2007 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
marcio.theis 3 Denunciar post Postado Setembro 28, 2007 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
orc 0 Denunciar post Postado Setembro 28, 2007 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
marcio.theis 3 Denunciar post Postado Setembro 28, 2007 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
orc 0 Denunciar post Postado Setembro 28, 2007 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
marcio.theis 3 Denunciar post Postado Setembro 28, 2007 Eu pensei em fazer usando Repeat... until... ou seja, ele fica repetindo até que uma condição seja satisfeita... Compartilhar este post Link para o post Compartilhar em outros sites
orc 0 Denunciar post Postado Setembro 28, 2007 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
orc 0 Denunciar post Postado Setembro 28, 2007 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
marcio.theis 3 Denunciar post Postado Setembro 28, 2007 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
orc 0 Denunciar post Postado Setembro 28, 2007 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
marcio.theis 3 Denunciar post Postado Setembro 28, 2007 beleza... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites