TXT COM VARIAS LINHAS PARA UMA UNICA LINHA
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!
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
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
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.
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
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.
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!
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 ?
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..
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
Agora esta do jeito que eu preciso. Muito obrigado mesmo cara.
Abraços.