Visual Basic - Escribir en fichero de texto

Life is soft - evento anual de software empresarial
 
Vista:

Escribir en fichero de texto

Publicado por Didi-chan (3 intervenciones) el 20/02/2009 10:29:05
Buenas, tengo que escribir un log de errores para mi aplicación. He buscado como se escribe en texto y me lo hace bien. Lo que pasa es que sobreescribe lo que ya había y me interesaría que simplemente añadiera el texto nuevo sin eliminar lo que hubiese anteriormente.

El código es este:

Public Function escribe(error As Variant)


Dim ruta As String
Dim stream
Dim fecha As String
Dim hora As String

Dim nombre As String

nombre = "LogError.txt"
fecha = Date
hora = Time

'Este objeto nos sirve para gestionar directorios
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")

Dim objConfig As clsConfig
Set objConfig = New clsConfig


Dim path As String
path = CStr(App.path) & "..adajozATICSAModulosObservatoriosComunUtilMOdllconfig.ini"

objConfig.setPathIniFile (path)

ruta = objConfig.getKey("FILES", "logfolder", "")

Set objConfig = Nothing

'Se comprueba la existencia del directorio TMP, debe terminar con la barra
If Not fso.FolderExists(ruta) Then
MkDir ruta
End If

'Se crea y se abre el fichero
Set stream = New ADODB.stream
stream.Type = adTypeText
stream.Open

'Se escribe en el
stream.WriteText fecha & " " & hora & " " & error.getDescripcion & " " & error.getCausa

'Se escribe en disco
stream.SaveToFile ruta & nombre, adSaveCreateOverWrite

'Se cierra si esta abierto
If stream.State = adStateOpen Then
stream.Close
End If

'Se destruye si aun persiste
If Not stream Is Nothing Then
Set stream = Nothing
End If

End Function

Bueno es una función a la que le llega un objeto error del que saco una descripción y una causa, eso es irrelevante. El tema esta en el WriteText o en algo del Stream...sabeis si hay alguna opción que permita añadir en vez de sobreescribir?? Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Escribir en fichero de texto

Publicado por P3L30N2009 (699 intervenciones) el 20/02/2009 11:13:19
Puedes cargar previamente el contenido del archivo en una variable de tipo String con la propiedad ReadAll del stream, a esa variable le añades los nuevos datos y la escribes en el archivo.

sería algo así:

Dim s As String
... abres el Stream para lectura (ForReading)
s = stream.ReadAll
stream.Close
s = s & fecha & " " & hora & " " & error.getDescripcion & " " & error.getCausa
(Quizá le tengas que poner antes de los datos, un retorno de carro)

.... abres el Stream para escritura (ForWriting)
stream.Write s
stream.Close
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Escribir en fichero de texto

Publicado por Antoni Masana (79 intervenciones) el 20/02/2009 12:22:30
Quizas esto es más simple.

Public Function escribe(Text.Error As Variant)
Dim Fichero As String, Fr as integer
Fichero=CStr(App.path) + "..\Badajoz\Observatorios\LOgError.txt"
Fr=FreeFile
Open Fichero For Append as #Fr
print #Fr, Text.Error
Close #Fr
end Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Escribir en fichero de texto

Publicado por ricardo (3 intervenciones) el 20/02/2009 13:45:39
ESTE PERSONAJE P3L30N2009 SIEMPRE DANDOSE DE SABELO TODO Y NO SABE NADA EL BABOSO, SUS UNICOS APORTES SON CRITICAR A LOS DEMAS POR HACER PREGUNTAS TAN FACILES SEGUN EL Y ESPERAR A QUE LES HAGAN EL TRABAJO.
LA SOLUCION QUE DA A ESTA PREGUNTA ES RIDICULA Y DEMUESTRA SU IGNORANCIA. APRENDE UN POCO DE Antoni Masana , ASI DE SIMPLE SE DEBE HACER.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Que te pasó, pelón?

Publicado por P3L30N2009 (699 intervenciones) el 20/02/2009 17:34:58
ALGUNA RESPUESTA QUE TE DI Y NO TE GUSTÓ? AL MENOS DA LA CARA YA QUE PARECE QUE SABES MUCHO DE MI PERO ES EL PRIMER POST QUE ESCRIBES CON ESE NOMBRE,

El que preguntó está trabajando con el objeto Scripting (supongo que ni sabes lo que es eso) y le di una solución acorde con ello, si tu tienes otra (cosa que dudo), la puedes exponer y la discutimos si es necesario.

NO SUELO CONTESTAR A ESTE TIPO DE PROVOCACIONES QUE DEMUESTRA LA INCULTURA DE ALGUNOS RESENTIDOS QUE NORMALMENTE QUIEREN QUE LES DEN EL TRABAJO HECHO Y NUNCA ACEPTAN UNA CRÍTICA.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Que te pasó, pelón?

Publicado por Didi-chan (3 intervenciones) el 26/02/2009 13:29:50
Muchas gracias a los dos por vuestras respuestas. Siento no haber contestado antes pero es que me pusieron otra tarea y tuve q dejar esto a un lado.
Tiene razon P3L30N2009, yo estaba trabajando con el objeto scripting y la otra solución que me han dado no se puede aplicar, asique no se a que viene insultarlo de esta manera, ademas siempre es preferible contar con soluciones distintas por lo que pueda pasar, que ya sabemos lo q es programar.
Al final lo he hecho como decía Antoni por ser más sencillo. Muchas gracias a ambos ^^.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar