Foro de elhacker.net

Programación => 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
  1. Private Sub Form_Load()
  2.    Call BorrarLinea("c:\archivo.txt", 2)
  3. End Sub
  4.  
  5. Public Function BorrarLinea(ByVal vNombreArchivo As String, ByVal vNumeroLinea As Long) As Boolean
  6.    Dim oFSO As Scripting.FileSystemObject
  7.    Dim oFSTR As Scripting.TextStream
  8.    Dim lCtr As Long
  9.    Dim vTemporal As String, vLinea As String
  10.    Dim vLineaEncontrada As Boolean
  11.  
  12.    Set oFSO = New FileSystemObject
  13.  
  14.    On Error GoTo ErrorHandler
  15.    If oFSO.FileExists(vNombreArchivo) Then
  16.        Set oFSTR = oFSO.OpenTextFile(vNombreArchivo)
  17.        lCtr = 1
  18.        Do While Not oFSTR.AtEndOfStream
  19.            vLinea = oFSTR.ReadLine
  20.            If lCtr <> vNumeroLinea Then
  21.                vTemporal = vTemporal & vLinea & vbCrLf
  22.            Else
  23.                vLineaEncontrada = True
  24.  
  25.            End If
  26.            lCtr = lCtr + 1
  27.        Loop
  28.  
  29.        oFSTR.Close
  30.        Set oFSTR = oFSO.CreateTextFile(vNombreArchivo, True)
  31.        oFSTR.Write (vTemporal)
  32.        BorrarLinea = vLineaEncontrada
  33.    End If
  34. ErrorHandler:
  35.    On Error Resume Next
  36.    oFSTR.Close
  37.    Set oFSTR = Nothing
  38.    Set oFSO = Nothing
  39. End Function
  40.  

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
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