Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: Zeroql en 19 Abril 2009, 22:29 PM

Título: Problemas con archivos de texto
Publicado por: Zeroql en 19 Abril 2009, 22:29 PM
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.
Título: Re: Problemas con archivos de texto
Publicado por: seba123neo en 19 Abril 2009, 23:03 PM
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.
Título: Re: Problemas con archivos de texto
Publicado por: 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.
Título: Re: Problemas con archivos de texto
Publicado por: Hasseds en 20 Abril 2009, 22:11 PM
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
Título: Re: Problemas con archivos de texto
Publicado por: Novlucker en 20 Abril 2009, 22:13 PM
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
Título: Re: Problemas con archivos de texto
Publicado por: Hasseds en 20 Abril 2009, 22:20 PM
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