ABRIR ARQUIVO TEXTO PUBLIC

ARNALDOCRUZ 17/03/2011 13:26:24
#368271
Boa tarde

Colegas tem como eu fazer algo como abaixo

Call Abrirarquivo ---Tipo public que so feche qdo eu chamar a função fecharArquivo

adiciono linhas

chamo outra função
adiciono linhas

chamo outra função
adiciono linhas

Call FechaArquivo

Function abrirArquivo()
Abro o arquivo
End Function

Function FechaArquivo()
Fecho o arquivo
end function

Hoje a cada função eu abro e fecho o mesmo arquivo, ai fica enviavel, pos a cada função adiciono varias linhas

Obrigado

JONATHANSTECKER 17/03/2011 13:39:09
#368273
Resposta escolhida
Porque você não adiciona todas essas informações em uma variável publica e depois apenas repassa o conteúdo dela para o arquivo de texto?

Exemplo.

    Public ConteudoArquivo As String

Private Sub Metodo01()
Me.ConteudoArquivo = [Ô]Estou adicionando um conteúdo[Ô]
End Sub

Private Sub Metodo02()
Me.ConteudoArquivo = [Ô]Estou adicionando um conteúdo novamente[Ô]
End Sub

Private Sub Salvar()
Dim Arquivo As StreamWriter
Arquivo = New StreamWriter([Ô]D:\Teste.txt[Ô])
Arquivo.Write(Me.ConteudoArquivo)
Arquivo.Close()
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Salvar()
End Sub
ARNALDOCRUZ 17/03/2011 14:23:21
#368280
eu já fiz desta forma, mas acontece qdo salva fica tudo em uma unica linha
e cada função irá adiocnar um tipo de registro e tem que ficar tipo

cada função terá um loop que adicionárá linhas, se acumular tudo em uma string vai acabar dando prolemas pois eu não sei qtas linhas poderão ser adicionadas, tipo 1000, 2000 , ou 10 ou 20 etc.
registro 10 ............................................................
registro 10 ............................................................
registro 10 ............................................................
registro 10 ............................................................
registro 20 ............................................................
registro 20 ............................................................
registro 20 ............................................................
registro 20 ............................................................
registro30 ............................................................
registro30 ............................................................
registro30 ............................................................

atualmente eu faço assim para cada função

Dim sw As StreamWriter
If IO.File.Exists([Ô]C:\caminho\Sintegra.txt[Ô]) Then
sw = File.AppendText([Ô]C:\Caminho\Sintegra.txt[Ô])
Else
sw = New StreamWriter([Ô]C:\caminho\Sintegra.txt[Ô])
End If
sw.WriteLine(MontaRegistroTipo_10)
sw.Close()

e isso está a cada linha, então fica um abre e fecha

no vb6

abre-se a LPT1
Open sArquivo For Output As #f_Sintegra

Print #1,[Ô]kkkDDDDDD[Ô]

pode chamar varias funções e usar o Print#1
fica tudo no mesmo arquivo

depois no final

Close #f_Sintegra



JONATHANSTECKER 17/03/2011 14:24:42
#368282
    Private Sub Metodo02()
Me.ConteudoArquivo += [Ô]Estou adicionando um conteúdo novamente[Ô] & vbNewLine
End Sub
JONATHANSTECKER 17/03/2011 14:30:59
#368283
Pensando melhor... Faça dessa forma que dará certo, porém use a classe StringBuilder.

Exemplo.

Imports System.IO
Imports System.Text

Public Class Form1

Public ConteudoArquivo As StringBuilder

Private Sub Metodo01()
Me.ConteudoArquivo.Append([Ô]Estou adicionando um conteúdo[Ô]).Append(vbNewLine)
End Sub

Private Sub Metodo02()
Me.ConteudoArquivo.Append([Ô]Estou adicionando um conteúdo novamente[Ô]).Append(vbNewLine)
End Sub

Private Sub Salvar()
Dim Arquivo As StreamWriter
Arquivo = New StreamWriter([Ô]D:\Teste.txt[Ô])
Arquivo.Write(Me.ConteudoArquivo.ToString)
Arquivo.Close()
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.ConteudoArquivo = New StringBuilder
Me.Metodo01()
Me.Metodo02()
Me.Salvar()
MessageBox.Show(Me.ConteudoArquivo.ToString)
End Sub

End Class
Tópico encerrado , respostas não são mais permitidas