BUSCA POR LINHAS REPETIDAS EM ARQUIVO TXT
Boa tarde galera... Estou precisando de um help é o seguinte:
Tenho um arquivo TXT, que tem várias linhas...
Todas elas tem o mesmo tamanho máximo
O que eu preciso, é percorrer este arquivo TXT, removendo as linhas repetidas e deixando somente 1 original.
Só que assim, supondo estou na primeira linha, vou ver todas as linhas DEPOIS dessa linha atual e apagar os repetidos.
Segunda linha, apagar TODAS as linhas iguais depois desta segunda linha.
Alguém pode me ajudar ?
Tenho um arquivo TXT, que tem várias linhas...
Todas elas tem o mesmo tamanho máximo
O que eu preciso, é percorrer este arquivo TXT, removendo as linhas repetidas e deixando somente 1 original.
Só que assim, supondo estou na primeira linha, vou ver todas as linhas DEPOIS dessa linha atual e apagar os repetidos.
Segunda linha, apagar TODAS as linhas iguais depois desta segunda linha.
Alguém pode me ajudar ?
Olá, amigo
Perguntas:
1ª:
Você sabe abrir e ler um arquivo .txt?
2ª:
Você sabe grava/criar um novo arquivo?
3ª:
Outra coisa o que você já tem pronto?
Por favor nos responda que assim ficará mais fácil de te ajudar!
Perguntas:
1ª:
Você sabe abrir e ler um arquivo .txt?
2ª:
Você sabe grava/criar um novo arquivo?
3ª:
Outra coisa o que você já tem pronto?
Por favor nos responda que assim ficará mais fácil de te ajudar!
Boa tarde amigo...
Sim, eu vou postar um trecho aqui
Set ts = fso.OpenTextFile(txtCaminho.Text)
n = FreeFile
Open txtCaminho.Text For Input As #1
Do Until EOF(1)
Line Input #1, Linha
[ô]AQUI
Loop
Close #1
Minha dúvida maior é tanto na lógica como também no código:
Onde eu coloquei [ô]AQUI, é que eu pensei que eu deveria comprar a linha atual que eu tenho com todas as linhas abaixo dela..
Pensei em jogar tudo em um array, porém não consegui fazer muito progresso porque este arquivo tem um tamanho indefinido, não tenho um tamanho máximo de linhas...
E não consigo fazer por tabelas temporárias, pois é assim: Tenho 5 linhas que tem 10 campos, depois 10 linhas que tem 20 campos, e por ai vai, o tamanho de campos de cada linha é diferente..
Porém todas as linhas tem o mesmo tamanho, a diferença é que quando acaba os campos eu preencho com espaço em branco. Todas as linhas tem no maximo 127 caracteres
Sim, eu vou postar um trecho aqui
Set ts = fso.OpenTextFile(txtCaminho.Text)
n = FreeFile
Open txtCaminho.Text For Input As #1
Do Until EOF(1)
Line Input #1, Linha
[ô]AQUI
Loop
Close #1
Minha dúvida maior é tanto na lógica como também no código:
Onde eu coloquei [ô]AQUI, é que eu pensei que eu deveria comprar a linha atual que eu tenho com todas as linhas abaixo dela..
Pensei em jogar tudo em um array, porém não consegui fazer muito progresso porque este arquivo tem um tamanho indefinido, não tenho um tamanho máximo de linhas...
E não consigo fazer por tabelas temporárias, pois é assim: Tenho 5 linhas que tem 10 campos, depois 10 linhas que tem 20 campos, e por ai vai, o tamanho de campos de cada linha é diferente..
Porém todas as linhas tem o mesmo tamanho, a diferença é que quando acaba os campos eu preencho com espaço em branco. Todas as linhas tem no maximo 127 caracteres
Mostre o formato desse arquivo, talvez possa ser aberto como base de dados ADO
Não sei se ele vai exibir aqui da mesma forma que no bloco de notas, mas vamos lá:
cada linha que começa com 50 está certo
E tenho também as linhas que começam com 75.. MAS, somente 1 de cada linha pode aparecer... Tem um campo em cada linha
75 que difere das outras, mas algumas linhas se repetem, preciso retirar essas que se repetem
5060629202005700209132694113 20131107SP551 0000645920P000000720000000000000000000000000000000000000000000000000072000000000N
5060629202005700209132694113 20131113SP551 0000655920P000000650000000000000000000000000000000000000000000000000065000000000N
5460629202005700551 00006459200000017100 000000160000000016000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000027104 000000020000000002000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000037106 000000040000000004000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000047106 000000020000000002000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000057127 000000010000000001000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000067107 000000060000000006000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000077108 000000050000000005000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000087110 000000060000000006000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000097112 000000150000000015000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000107114 000000120000000012000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000117115 000000030000000003000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000017100 000000170000000017000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000027101 000000020000000002000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000037106 000000030000000003000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000047106 000000010000000001000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000057127 000000010000000001000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000067107 000000040000000004000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000077108 000000010000000001000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000087108 000000110000000011000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000097110 000000030000000003000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000107110 000000020000000002000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000117114 000000140000000014000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000127115 000000060000000006000000000000000000000000000000000000000000000000000000000
7520131101201311307100 28044000CIL. OXIGENIO, COMPRIMIDO ONU 1072 2.2/5.1 N.A - INDUCI 000000000000000000000000000
7520131101201311307104 28044000CIL. OXIGENIO, COMPRIMIDO ONU 1072 2.2/5.1 N.A - INDUCI 000000000000000000000000000
7520131101201311307106 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A CI 000000000000000000000000000
7520131101201311307106 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A CI 000000000000000000000000000
7520131101201311307127 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A - 3 KG CI 000000000000000000000000000
7520131101201311307107 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A - CARGA CI 000000000000000000000000000
7520131101201311307108 28042100CIL. ARGONIO, COMPRIMIDO ONU 1006 2.2 N.A CI 000000000000000000000000000
7520131101201311307110 28043000CIL. NITROGENIO, COMPRIMIDO ONU 1066 2.2 N.A CI 000000000000000000000000000
7520131101201311307112 28112100CIL. DIOXIDO DE CARBONO ONU 1013 - 2.2 N.A CI 000000000000000000000000000
7520131101201311307114 28046900CIL. MISTURA DE GASES RAROS, COMPRIMIDO ONU 1979 2.2 CI 000000000000000000000000000
7520131101201311307115 28046900CIL. MISTURA DE GASES RAROS, COMPRIMIDO ONU 1979 2.2 CI 000000000000000000000000000
7520131101201311307100 28044000CIL. OXIGENIO, COMPRIMIDO ONU 1072 2.2/5.1 N.A - INDUCI 000000000000000000000000000
7520131101201311307104 28044000CIL. OXIGENIO, COMPRIMIDO ONU 1072 2.2/5.1 N.A - INDUCI 000000000000000000000000000
7520131101201311307106 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A CI 000000000000000000000000000
7520131101201311307106 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A CI 000000000000000000000000000
7520131101201311307127 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A - 3 KG CI 000000000000000000000000000
7520131101201311307107 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A - CARGA CI 000000000000000000000000000
7520131101201311307108 28042100CIL. ARGONIO, COMPRIMIDO ONU 1006 2.2 N.A CI 000000000000000000000000000
7520131101201311307110 28043000CIL. NITROGENIO, COMPRIMIDO ONU 1066 2.2 N.A CI 000000000000000000000000000
7520131101201311307112 28112100CIL. DIOXIDO DE CARBONO ONU 1013 - 2.2 N.A CI 000000000000000000000000000
7520131101201311307114 28046900CIL. MISTURA DE GASES RAROS, COMPRIMIDO ONU 1979 2.2 CI 000000000000000000000000000
7520131101201311307115 28046900CIL. MISTURA DE GASES RAROS, COMPRIMIDO ONU 1979 2.2 CI 000000000000000000000000000
7520131101201311307100 28044000CIL. OXIGENIO, COMPRIMIDO ONU 1072 2.2/5.1 N.A - INDUCI 000000000000000000000000000
7520131101201311307104 28044000CIL. OXIGENIO, COMPRIMIDO ONU 1072 2.2/5.1 N.A - INDUCI 000000000000000000000000000
7520131101201311307106 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A CI 000000000000000000000000000
7520131101201311307106 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A CI 000000000000000000000000000
cada linha que começa com 50 está certo
E tenho também as linhas que começam com 75.. MAS, somente 1 de cada linha pode aparecer... Tem um campo em cada linha
75 que difere das outras, mas algumas linhas se repetem, preciso retirar essas que se repetem
5060629202005700209132694113 20131107SP551 0000645920P000000720000000000000000000000000000000000000000000000000072000000000N
5060629202005700209132694113 20131113SP551 0000655920P000000650000000000000000000000000000000000000000000000000065000000000N
5460629202005700551 00006459200000017100 000000160000000016000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000027104 000000020000000002000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000037106 000000040000000004000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000047106 000000020000000002000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000057127 000000010000000001000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000067107 000000060000000006000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000077108 000000050000000005000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000087110 000000060000000006000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000097112 000000150000000015000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000107114 000000120000000012000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006459200000117115 000000030000000003000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000017100 000000170000000017000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000027101 000000020000000002000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000037106 000000030000000003000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000047106 000000010000000001000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000057127 000000010000000001000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000067107 000000040000000004000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000077108 000000010000000001000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000087108 000000110000000011000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000097110 000000030000000003000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000107110 000000020000000002000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000117114 000000140000000014000000000000000000000000000000000000000000000000000000000
5460629202005700551 00006559200000127115 000000060000000006000000000000000000000000000000000000000000000000000000000
7520131101201311307100 28044000CIL. OXIGENIO, COMPRIMIDO ONU 1072 2.2/5.1 N.A - INDUCI 000000000000000000000000000
7520131101201311307104 28044000CIL. OXIGENIO, COMPRIMIDO ONU 1072 2.2/5.1 N.A - INDUCI 000000000000000000000000000
7520131101201311307106 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A CI 000000000000000000000000000
7520131101201311307106 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A CI 000000000000000000000000000
7520131101201311307127 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A - 3 KG CI 000000000000000000000000000
7520131101201311307107 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A - CARGA CI 000000000000000000000000000
7520131101201311307108 28042100CIL. ARGONIO, COMPRIMIDO ONU 1006 2.2 N.A CI 000000000000000000000000000
7520131101201311307110 28043000CIL. NITROGENIO, COMPRIMIDO ONU 1066 2.2 N.A CI 000000000000000000000000000
7520131101201311307112 28112100CIL. DIOXIDO DE CARBONO ONU 1013 - 2.2 N.A CI 000000000000000000000000000
7520131101201311307114 28046900CIL. MISTURA DE GASES RAROS, COMPRIMIDO ONU 1979 2.2 CI 000000000000000000000000000
7520131101201311307115 28046900CIL. MISTURA DE GASES RAROS, COMPRIMIDO ONU 1979 2.2 CI 000000000000000000000000000
7520131101201311307100 28044000CIL. OXIGENIO, COMPRIMIDO ONU 1072 2.2/5.1 N.A - INDUCI 000000000000000000000000000
7520131101201311307104 28044000CIL. OXIGENIO, COMPRIMIDO ONU 1072 2.2/5.1 N.A - INDUCI 000000000000000000000000000
7520131101201311307106 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A CI 000000000000000000000000000
7520131101201311307106 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A CI 000000000000000000000000000
7520131101201311307127 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A - 3 KG CI 000000000000000000000000000
7520131101201311307107 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A - CARGA CI 000000000000000000000000000
7520131101201311307108 28042100CIL. ARGONIO, COMPRIMIDO ONU 1006 2.2 N.A CI 000000000000000000000000000
7520131101201311307110 28043000CIL. NITROGENIO, COMPRIMIDO ONU 1066 2.2 N.A CI 000000000000000000000000000
7520131101201311307112 28112100CIL. DIOXIDO DE CARBONO ONU 1013 - 2.2 N.A CI 000000000000000000000000000
7520131101201311307114 28046900CIL. MISTURA DE GASES RAROS, COMPRIMIDO ONU 1979 2.2 CI 000000000000000000000000000
7520131101201311307115 28046900CIL. MISTURA DE GASES RAROS, COMPRIMIDO ONU 1979 2.2 CI 000000000000000000000000000
7520131101201311307100 28044000CIL. OXIGENIO, COMPRIMIDO ONU 1072 2.2/5.1 N.A - INDUCI 000000000000000000000000000
7520131101201311307104 28044000CIL. OXIGENIO, COMPRIMIDO ONU 1072 2.2/5.1 N.A - INDUCI 000000000000000000000000000
7520131101201311307106 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A CI 000000000000000000000000000
7520131101201311307106 29012900CIL. ACETILENO, DISSOLVIDO ONU 1001 2.1 N.A CI 000000000000000000000000000
Ok, essas linhas são os mesmos tipos de dados? Tipo, tem campos, ainda que definidos por tamanho? Ou depende do inÃcio da linha que define o que cada linha é?
Cada linha é uma informação de um produto... Cada linha tem alguns campos por exemplo:
75 = Tipo de linha
20131101 = Data inicio
20131130 = Data final
7106 = Código do Produto
e por ai vai
Preciso mesmo é comprar se existe linhas que contém este campo = Código do Produto (exemplo do 7106)
Se já existir uma linha com esse código, então eu tenho que deixar somente 1 linha dessa...
75 = Tipo de linha
20131101 = Data inicio
20131130 = Data final
7106 = Código do Produto
e por ai vai
Preciso mesmo é comprar se existe linhas que contém este campo = Código do Produto (exemplo do 7106)
Se já existir uma linha com esse código, então eu tenho que deixar somente 1 linha dessa...
Falando apenas de lógica, eu diria se você não quer linhas repetidas no arquivo final o que você deve fazer não é comparar a linha atual com as próximas linhas, isso não garante que ela seja única, pode ser que já tenha alguma outra antes dela.
O que você deveria fazer é ver se a linha atual já foi gravada no outro arquivo, o loop deveria seguir uma lógica do tipo
Lê a próxima linha do arquivo de origem
Verifica se já gravou um linha igual a esta no arquivo de destino
Se já gravou ignora a linha atual
Se ainda não gravou uma linha igual a esta então grava ela no arquivo de destino
Passa para a próxima linha do arquivo de origem e começa tudo de novo
Leve em consideração que se você quer alterar o próprio arquivo você não vai conseguir apagar linhas dele, você deve regravar ele inteiro, então é mais fácil criar um arquivo novo e depois substituir o antigo. Se os arquivos não forem grandes demais você poderia também manter os dados dele em memória, para só precisar ler as linhas uma vez do disco, mas cabe a você saber fazer isso.
E outra coisa, porque você está usando o FileSystemObject para abrir o arquivo se está depois usando o comando Open para fazer o mesmo de novo? Você deveria usar apenas um dos dois.
E se estiver muito difÃcil fazer isso direto nos arquivos você sempre tem a opção de importar todos os dados para um banco de dados e usar um SELECT DISTINCT (ou equivalente dependendo do banco de dados usado) para trazer apenas os registros não repetidos
O que você deveria fazer é ver se a linha atual já foi gravada no outro arquivo, o loop deveria seguir uma lógica do tipo
Lê a próxima linha do arquivo de origem
Verifica se já gravou um linha igual a esta no arquivo de destino
Se já gravou ignora a linha atual
Se ainda não gravou uma linha igual a esta então grava ela no arquivo de destino
Passa para a próxima linha do arquivo de origem e começa tudo de novo
Leve em consideração que se você quer alterar o próprio arquivo você não vai conseguir apagar linhas dele, você deve regravar ele inteiro, então é mais fácil criar um arquivo novo e depois substituir o antigo. Se os arquivos não forem grandes demais você poderia também manter os dados dele em memória, para só precisar ler as linhas uma vez do disco, mas cabe a você saber fazer isso.
E outra coisa, porque você está usando o FileSystemObject para abrir o arquivo se está depois usando o comando Open para fazer o mesmo de novo? Você deveria usar apenas um dos dois.
E se estiver muito difÃcil fazer isso direto nos arquivos você sempre tem a opção de importar todos os dados para um banco de dados e usar um SELECT DISTINCT (ou equivalente dependendo do banco de dados usado) para trazer apenas os registros não repetidos
[ô]Veja se te ajuda, claro que pode ser melhorado! E outra coisa não testei escrevi diretamente aqui
Private Sub LerArquivoGravar()
Dim F As Integer, F1 As Integer
Dim Linha As String, Linha1 As String
Dim pGravar As Boolean
F = FreeFile
Open txtCaminho.Text For Input As #F
While Not EOF(F)
Line Input #F, Linha
If Int(Left(Trim(Linha), 2)) = 75 Then
F1 = FreeFile
pGravar = True
Open [Ô]C:\Temp\SeuArquivo.txt[Ô] For Input As #F1
While Not EOF(F)
Line Input #F1, Linha1
If Int(Left(Trim(Linha1), 2)) = 75 Then
If UCase(Trim(Linha)) = UCase(Trim(Linha1)) Then
pGravar = False
End If
End If
Wend
Close #F1
If pGravar Then
Call GravarNovo(Linha)
End If
Else
Call GravarNovo(Linha)
End If
Wend
Close #F
End Sub
Private Sub GravarNovo(vTexto)
[ô]Utilizado para gravar os dados no novo arquivo
Dim F As Integer
F = FreeFile
Open [Ô]C:\Temp\SeuArquivo.txt[Ô] For Append Shared As #F
Print #F, vTexto
Close #F
End Sub
[ô]Para chamar o procedimento coloque a linha abaixo dentro do click de um botão
Call LerArquivoGravar
Espero te ajudado
Filman
Obrigado pela ajuda, não testei porque achei uma solução.. Vou postar aqui
Tenho esse comando dentro de um Click
Open txtCaminho.Text For Output As #2
For i = 0 To List1.ListCount - 1
List1.ListIndex = i
If Left(List1.Text, 2) = [Ô]75[Ô] Then Qtde_registro_75 = Qtde_registro_75 + 1
If Left(List1.Text, 2) = [Ô]90[Ô] Then
Teste = Replace(List1.Text, Format(vTipo75, [Ô]0000000[Ô]), Format(Qtde_registro_75, [Ô]0000000[Ô]))
Print #2, Teste
Else
Print #2, List1.Text
End If
Qtde_Linhas = Qtde_Linhas + 1
Next
Close #2
Que chama esta função:
Public Function Reptido(Palavra As String, Lista As ListBox, Optional Qtde_registro_75 As Integer) As Boolean
Dim Counter As Long
[ô]Qtde_registro_75 = 0
For i = 0 To Lista.ListCount
DoEvents
[ô]If Left(Palavra, 2) = [Ô]75[Ô] Then Qtde_registro_75 = Qtde_registro_75 + 1
If Palavra = Lista.List(i) Then Counter = Counter + 1
Next i
If Counter > 0 Then Let Reptido = True
End Function
Obrigado a todos que tentaram ajudar
Obrigado pela ajuda, não testei porque achei uma solução.. Vou postar aqui
Tenho esse comando dentro de um Click
Open txtCaminho.Text For Output As #2
For i = 0 To List1.ListCount - 1
List1.ListIndex = i
If Left(List1.Text, 2) = [Ô]75[Ô] Then Qtde_registro_75 = Qtde_registro_75 + 1
If Left(List1.Text, 2) = [Ô]90[Ô] Then
Teste = Replace(List1.Text, Format(vTipo75, [Ô]0000000[Ô]), Format(Qtde_registro_75, [Ô]0000000[Ô]))
Print #2, Teste
Else
Print #2, List1.Text
End If
Qtde_Linhas = Qtde_Linhas + 1
Next
Close #2
Que chama esta função:
Public Function Reptido(Palavra As String, Lista As ListBox, Optional Qtde_registro_75 As Integer) As Boolean
Dim Counter As Long
[ô]Qtde_registro_75 = 0
For i = 0 To Lista.ListCount
DoEvents
[ô]If Left(Palavra, 2) = [Ô]75[Ô] Then Qtde_registro_75 = Qtde_registro_75 + 1
If Palavra = Lista.List(i) Then Counter = Counter + 1
Next i
If Counter > 0 Then Let Reptido = True
End Function
Obrigado a todos que tentaram ajudar
Bom se o seu problema foi solucionado ficamos contentes, portanto encerre o tópico!
Obrigado
Obrigado
Tópico encerrado , respostas não são mais permitidas