PEGAR LINHA DE UM ARQUIVO E GRAVAR EM OUTRO

MOKOVA666 12/12/2014 11:59:37
#443180
Olá todos.
Estou com um problema aqui no VB6.

O que eu quero fazer:
Quero abrir um arquivo que tem varias linhas com varias informações em cada linha, essas informações estão separadas por [Ô],[Ô] (Virgula), ao abrir esse arquivo, o programa passa por cada linha e depois cria um novo arquivo de texto e grava todas as linhas nesse novo arquivo.
O código que eu já fiz:


Dim linha1 As String
Dim i As Integer, F As Integer

i = 0
F = FreeFile [ô]Essa linha aqui é para armazenar a numeração livre para abertura do arquivo

Open [Ô]teste1.txt[Ô] For Input As #F
While Not EOF(F)
Line Input #F, linha1

Open [Ô]teste2.txt[Ô] For Append As #F
Print #F, linha1
Wend
Close #F


Como podem ver no código, eu faço um while para passar pelo arquivo até a ultima linha, em cada linha que ele passa, ele pega a linha e logo em seguida abre o novo arquivo e já grava essa linha nele, esse é o problema, pois ao tentar abrir ele da essa mensagem [Ô]File already open[Ô] , Alguém poderia ver?
Obrigado.
EPISCOPAL 12/12/2014 12:34:24
#443181
Resposta escolhida
Dim linha1 As String
Dim i As Integer, F As Integer, G as Integer

i = 0
F = FreeFile [ô]Essa linha aqui é para armazenar a numeração livre para abertura do arquivo
[txt-color=#e80000]G = FreeFile[/txt-color]

Open [Ô]teste1.txt[Ô] For Input As #F
While Not EOF(F)
Line Input #F, linha1

Open [Ô]teste2.txt[Ô] For Append As[txt-color=#e80000] #G[/txt-color]
Print #G, linha1
Wend
Close #F


voce não pode abrir dois arquivos no mesmo buffer
EPISCOPAL 12/12/2014 12:36:18
#443182
Há esqueci de fechar o segundo arquivo:

Open [Ô]teste1.txt[Ô] For Input As #F
While Not EOF(F)
Line Input #F, linha1

Open [Ô]teste2.txt[Ô] For Append As #G
Print #G, linha1
Close #G
Wend
Close #F
WILSONJOSE 12/12/2014 12:36:54
#443183
Veja se te ajuda, já precisei fazer o mesmo que você postou, mas não achei a rotina, não foge muito do que eu postei

Set ofs = New Scripting.FileSystemObject

sTemp = App.Path & [Ô]\[Ô] & ofs.GetTempName

NomeArquivo = File1.FileName

sCaminho = Dir1 & [Ô]\[Ô] & NomeArquivo

If ofs.FileExists(sCaminho) = True Then

While Not oTS.AtEndOfStream = True
sLinha = Empty
sLinha = oTS.ReadLine

slinha = dados
gerar novo aquivo(passar os dados como parametro)

oTSB.WriteLine sLinha
wend

private sub gerar novo arquivo(dados)
arqC = FreeFile

Open [Ô]NOVO ARQUIVO.txt[Ô] For Append As #arqC
Print #arqC, dados

Close #arqC

end sub

MOKOVA666 12/12/2014 13:26:39
#443184
Citação:

:
Há esqueci de fechar o segundo arquivo:

Open [Ô]teste1.txt[Ô] For Input As #F
While Not EOF(F)
Line Input #F, linha1

Open [Ô]teste2.txt[Ô] For Append As #G
Print #G, linha1
Close #G
Wend
Close #F


Continua dando a mesma coisa, [Ô]File already open[Ô]
Eu já tentei mudar isso também, mas da a mesma coisa.
MARCELO.TREZE 12/12/2014 14:50:08
#443187
é assim

Dim A As Integer, B As Integer
Dim Linha As String

A = FreeFile
B = FreeFile

Open [Ô]C:    este.txt[Ô] For Input As #A
Open [Ô]c:\cópia.txt[Ô] For Output As #B

Do While Not EOF(A)
Line Input #A, Linha
Print #B, Linha
Loop
Close #A
Close #B
MOKOVA666 12/12/2014 14:54:36
#443189
Citação:

:
é assim

Dim A As Integer, B As Integer
Dim Linha As String

A = FreeFile
B = FreeFile

Open [Ô]C: este.txt[Ô] For Input As #A
Open [Ô]c:cópia.txt[Ô] For Output As #B

Do While Not EOF(A)
Line Input #A, Linha
Print #B, Linha
Loop
Close #A
Close #B


Ainda continua dando o mesmo erro =x
parece que ele só abre 1 por vez =x
SINCLAIR 12/12/2014 17:14:17
#443195
Colega,

Uma pequena mudança no código, porque entre atribuir o FreeFile à A e também para B tem que abrir os arquivos, para que o FreeFile mude.

Dim A As Integer, B As Integer
Dim Linha As String

A = FreeFile
Open [Ô]C:    este.txt[Ô] For Input As #A

B = FreeFile
Open [Ô]c:\cópia.txt[Ô] For Output As #B

Do While Not EOF(A)
Line Input #A, Linha
Print #B, Linha
Loop
Close #A
Close #B


E, claro, tomar cuidado com o path dos arquivos, sobretudo em Open [Ô]C:    este.txt[Ô] For Input As #A para ter certeza que o arquivo está no path informado no comando Open.

Tudo de bom.
EPISCOPAL 12/12/2014 20:36:20
#443199
é isso mesmo Euzébio
Tópico encerrado , respostas não são mais permitidas