TXT COM VARIAS LINHAS PARA UMA UNICA LINHA

JAQUESBH 19/11/2013 18:13:43
#431273
Boa noite pessoal,

Estou precisando ler um arquivo txt onde contém vários clientes, só que cada cliente ocupa sempre 21 linhas, estou precisando de uma rotina para colocar as 21 linhas desse cliente e uma única linha.

Grato.

Valeu!
TIAGOVITAL 20/11/2013 07:46:21
#431287
Resposta escolhida
Olá bom dia.
Pelo que entendi o codigo a seguir irá lhe ajudar
Citação:

dim auxiliar, conteudo as string
dim Contador as integer
open caminho_do_arquivo for input as #1 [ô]abrir para leitura
Contador = 1
while not eof(1)
Line Input #1,auxiliar
if Contador <= 21 then
conteudo = conteudo & auxiliar
contador = contador + 1
[ô]Junta os dados para que você possa Trabalhar com eles
else
[ô]Volta o contador ao seu valor inicial e limpa o Conteudo
conteudo = [Ô][Ô]
contador = 1
end if
wend
close #1

JAQUESBH 20/11/2013 10:48:16
#431291
Ola Tiago,

Com essa rotina, mando imprimir para um novo arquivo a variável conteúdo, só que duplica as linhas, veja o arquivo original e o arquivo que a rotina gera.

Grato
TIAGOVITAL 20/11/2013 14:26:57
#431302
Tente fazer da seguinte maneira.
Quando o seu Contador for igual a 21 o LOOP irá cair na condição ELSE
do IF,Então dentro desta condição ELSE você deve pegar e Mandar imprimir a variável CONTEUDO
em seu novo arquivo de texto e depois ZERAR a variável CONTEUDO e voltar o contador ao valor 1.
JAQUESBH 20/11/2013 15:40:13
#431303
Citação:

:
Tente fazer da seguinte maneira.
Quando o seu Contador for igual a 21 o LOOP irá cair na condição ELSE
do IF,Então dentro desta condição ELSE você deve pegar e Mandar imprimir a variável CONTEUDO
em seu novo arquivo de texto e depois ZERAR a variável CONTEUDO e voltar o contador ao valor 1.



Tiago olha com está o código, mas mesmo assim não está funcionando.

Citação:

Dim auxiliar, conteudo As String
Dim Contador As Integer

Open App.Path + [Ô]/Original.txt[Ô] For Input As #1 [ô]abrir para leitura
Open App.Path + [Ô]/ZZZZ.txt[Ô] For Output As #2
Contador = 1
While Not EOF(1)
Line Input #1, auxiliar

If Contador <= 21 Then
conteudo = conteudo & auxiliar
Contador = Contador + 1
[ô]Junta os dados para que você possa Trabalhar com eles
[ô]Print #2, conteudo
Else
[ô]Volta o contador ao seu valor inicial e limpa o Conteudo
Print #2, conteudo
conteudo = [Ô][Ô]
Contador = 1

End If
[ô]Print #2, conteudo
[ô]Loop


Wend
Close #1

MARCELO.TREZE 20/11/2013 17:38:05
#431310
Colega tiago é o seguiinte, unido as 21 linhas em apenas uma não caberá em uma unica linha do notepad o que vai parecer uma configuração errada.

o código está correto, porém você terá de fazer uma formatação diferente.

no padrão do arquivo texto original, percebi que a cada três linhas você tem praticamente os mesmos dados, mudando apenas o código.

então diga o que você deseja extrair do arquivo original, porque o código terá de ser refinado.




JAQUESBH 20/11/2013 18:36:09
#431312
Marcelo,

Eu não uso o notepad para abrir esse tipo de arquivo, o editor que uso consegue ler a linha toda, o programa que uso chama-se ConTEXT.

Ai realmente as 21 linhas seguidas não estão ficando em uma única com o código do Tiago.

Valeu!
TIAGOVITAL 21/11/2013 08:44:28
#431320
Bom dia JAQUES
Ao verificar o código e o Arquivo gerado ZZZZ.TXT usando o NOTEPAD++ o mesmo foi gerado
corretamente ou seja a cada 21 linhas do arquivo original ele gerou uma nova linha no arquivo ZZZZ.TXT,
Tente verificar seu editor de texto e as configurações do mesmo.
Conforme o Marcelo falou o arquivo precisa ser refinado,ou seja você deve tratar as informações necessárias para seu programa.
o que exatamente você desejar extrair deste arquivo ?


JAQUESBH 21/11/2013 09:23:10
#431324
Bom dia Tiago,

Cara baixei o notepad++ e realmente está gerando errado. Vou tentar explicar melhor.
O arquivo Original contém 84 linhas, como cada cliente usa 21 linhas, então nesse arquivo existe 4 clientes.
Preciso que o programa me retorne um arquivo com 4 linhas, ou seja uma pra cada cliente. O código está gerando o arquivo ZZZZ.TXT com apenas 3 linhas e não está com as informações corretas..

TIAGOVITAL 21/11/2013 14:24:26
#431340
Boa tarde jaques
Entendi a situação.
Segue Código comentado para que você possa fazer a geração do arquivo.
acredito que o mesmo esteja de fácil entendimento.
Citação:

Dim auxiliar, conteudo As String
Dim Contador As Integer

Open App.Path + [Ô]/Original.txt[Ô] For Input As #1 [ô]abrir para leitura
Open App.Path + [Ô]/ZZZZ.txt[Ô] For Output As #2
[ô]SETA O CONTADOR A ZERO
Contador = 0
While Not EOF(1)
[ô]PEGA A PRIMEIRA LINHA DO ARQUIVO
Line Input #1, auxiliar
[ô]ACRESCENTA + 1 NO CONTADOR
Contador = Contador + 1
[ô]AGREGA VALOR AO CONTEUDO
conteudo = conteudo & auxiliar
[ô]SE O CONTADOR CHEGAR A 21
If Contador = 21 Then
[ô]IMPRIMO NO NOVO ARQUIVO O CONTEUDO
Print #2, conteudo
[ô]ZERO O CONTEUDO DA VARIAVEL
conteudo = [Ô][Ô]
[ô]ZERO O CONTADOR
Contador = 0
End If

Wend
Close #1
Close #2

JAQUESBH 21/11/2013 15:30:39
#431341
Muito Obrigado Tiago,

Agora esta do jeito que eu preciso. Muito obrigado mesmo cara.

Abraços.
Tópico encerrado , respostas não são mais permitidas