Problemas con archivos de texto

Iniciado por Zeroql, 19 Abril 2009, 22:29 PM

0 Miembros y 2 Visitantes están viendo este tema.

Zeroql

Buenas.
tengo una pregunta... sobre los archivos de texto
se como se guarda y se lee desde un archivo pero nose como borrar una linea del archivo...
por ejemplo

tengo un registro con:

Reg1
Reg2
Reg3
Reg4

como hago para borrar la linea Reg2 si que me kede un espacion...
he pensado de mil formas de hacerlo... pero no encuentro la forma.

he visto por ahi guogleando que no se puede y la unica forma es creando otro registro... es eso cierto????
si hay algun metodo por favor divulgenlo. XD

de ante mano muchas gracias.
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


seba123neo

Hola, si una forma es creando un temporal, aca te paso un codigo con FSO que hace lo que queres:

Código (vb) [Seleccionar]
Private Sub Form_Load()
    Call BorrarLinea("c:\archivo.txt", 2)
End Sub

Public Function BorrarLinea(ByVal vNombreArchivo As String, ByVal vNumeroLinea As Long) As Boolean
    Dim oFSO As Scripting.FileSystemObject
    Dim oFSTR As Scripting.TextStream
    Dim lCtr As Long
    Dim vTemporal As String, vLinea As String
    Dim vLineaEncontrada As Boolean
   
    Set oFSO = New FileSystemObject

    On Error GoTo ErrorHandler
    If oFSO.FileExists(vNombreArchivo) Then
        Set oFSTR = oFSO.OpenTextFile(vNombreArchivo)
        lCtr = 1
        Do While Not oFSTR.AtEndOfStream
            vLinea = oFSTR.ReadLine
            If lCtr <> vNumeroLinea Then
                vTemporal = vTemporal & vLinea & vbCrLf
            Else
                vLineaEncontrada = True

            End If
            lCtr = lCtr + 1
        Loop

        oFSTR.Close
        Set oFSTR = oFSO.CreateTextFile(vNombreArchivo, True)
        oFSTR.Write (vTemporal)
        BorrarLinea = vLineaEncontrada
    End If
ErrorHandler:
    On Error Resume Next
    oFSTR.Close
    Set oFSTR = Nothing
    Set oFSO = Nothing
End Function


despues cambiale para que cree el objeto FSO en tiempo de ejecucion asi no tenes que poner la referencia...

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Spider-Net

Almacena el contenido del fichero en un textbox, y luego:

Text1.Text=Replace(Text1.Text, "Reg2", "")

Creo que era así la sintaxis de Replace,no estoy del todo seguro.

Y ya lo vuelves a guardar machacando el fichero anterior y listo xD.

Hasseds

Cita de: Spider-Net en 20 Abril 2009, 22:04 PM
Almacena el contenido del fichero en un textbox, y luego:

Text1.Text=Replace(Text1.Text, "Reg2", "")

Creo que era así la sintaxis de Replace,no estoy del todo seguro.

Y ya lo vuelves a guardar machacando el fichero anterior y listo xD.

Tal cual, o  ni a un text1, lo almacenas en una variable y lo vuelves al archivo.

Saludos
Sergio Desanti

Novlucker

Con Replace, reemplazarías todas las coincidencias en caso de estar repetido en varias líneas  :rolleyes:

Previo a hacer el replace sería necesario determinar la longitud de texto antes de Reg2 para así pasarlo como parametro a la función (start), además de establecer que solo se reemplace una vez (count)

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Hasseds

Tenes razon  Novlucker, tambien se puede usar Split y eliminar la linea que contengha en su interior Reg2

PD: yo usaria archivos de acceso aleatorio en lugar de txt, saludos



Sergio Desanti