Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: pandemonio en 21 Septiembre 2006, 17:27 pm



Título: Duda con archivos de texto
Publicado por: pandemonio en 21 Septiembre 2006, 17:27 pm
Tengo un archivo de texto con el siguiente contenido:

Citar
Campo1, MAS DATOS|Campo2|Campo3|Campo4|
Campo1|Campo2, MAS DATOS|Campo3|Campo4|
Campo1|Campo2|Campo3, MAS DATOS|Campo4|
Campo1|Campo2|Campo3|Campo4, MAS DATOS|

Si notan, el archivo contiene una serie de registros conformados por campos los cuales están divididos por Pipes (|), mi problema aquí es que deseo eliminar todas las comas (,) que existen en el archivo y guardar dicho archivo sin las comas; haciendo esto el archivo debería quedar así:

Citar
Campo1 MAS DATOS|Campo2|Campo3|Campo4|
Campo1|Campo2 MAS DATOS|Campo3|Campo4|
Campo1|Campo2|Campo3 MAS DATOS|Campo4|
Campo1|Campo2|Campo3|Campo4 MAS DATOS|

El archivo debe quedar sin comas, eso es todo lo que necesito. Gracias.


Título: Re: Duda con archivos de texto
Publicado por: karmany en 21 Septiembre 2006, 17:46 pm
Puedes abrir el archivo en modo binario o aleatorio y comparar cuándo aparece la ",":
Open nombre_fichero For modo As #nFichero
Utiliza Freefile para obterner el siguiente número disponible.

Después se me ocurre que cuando encuentre el programa una "," que mueva todo el contenido del archivo una posición a la izquierda, a partir de la "," encontrada.


Título: Re: Duda con archivos de texto
Publicado por: pandemonio en 21 Septiembre 2006, 18:24 pm
Puedes abrir el archivo en modo binario o aleatorio y comparar cuándo aparece la ",":
Open nombre_fichero For modo As
  • nFichero
Utiliza Freefile para obterner el siguiente número disponible.

Después se me ocurre que cuando encuentre el programa una "," que mueva todo el contenido del archivo una posición a la izquierda, a partir de la "," encontrada.

Buena idea, gracias por tu comentario, me será de mucha ayuda. ¿Alguién tiene más sugerencias?


EDITADO

Aquí tengo el código para buscar la coma, ahora sólo me falta el código para quitarla en todo el archivo.

Código:

Private Sub Command1_Click()
    Dim Archivo As String, TODO As String, Busca As String
   
    Dim NumArchivo As Integer
   
    Archivo = "C:\archivo.txt"
    NumArchivo = FreeFile()
   
    Open Archivo For Input As #NumArchivo
        TODO = input(LOF(1), 1)
       
        busca = InStr(1, TODO, ",", vbTextCompare)
           
        If busca > 0 Then
            MsgBox "Encontrado"
        End If
    Close #NumArchivo
   
    Text1.Text = TODO
End Sub


Es necesario agregar un botón de comando y un cuadro de texto con la propiedad Multiline en True.


Título: Re: Duda con archivos de texto
Publicado por: MANULOMM en 22 Septiembre 2006, 03:50 am
Hola...
Yo he encontrado un codigo el cual busca y reemplaza un caracter en un texto, lo malo es que solo reemplaza el 1 caracter que hay..
Yo lo he adecuado para que busque y reemplaza todos los caracteres ( en este caso "comas"), lo unico que tenes que hacer es pasar el texto del Archivo.txt al texbox que para mi codigo se llama txtTexto...
Código:
Private Sub Command1_Click()
Dim original, busca, reemplaza, nueva As String
Dim long_original, long_busca, lugar_reemplaza As Integer
Dim Cont As Integer
For Cont = 1 To Len(txtTexto.Text)
    original = Trim(txtTexto.Text)
    busca = ","
    reemplaza = ""
    long_original = Len(original)
    long_busca = Len(busca)
    lugar_reemplaza = InStr(original, busca)
    If lugar_reemplaza = 0 Then
        txtTexto = nueva
        Exit Sub
    End If
    nueva = Mid(original, 1, lugar_reemplaza - 1) & reemplaza

    nueva = nueva & Mid(original, lugar_reemplaza + long_busca, long_original)
    txtTexto = nueva
Next Cont
End Sub
espero te sirva....

Atentamente


JUAN MANUEL LOMBANA
MEDELLÍN - COLOMBIA


Título: Re: Duda con archivos de texto
Publicado por: karmany en 22 Septiembre 2006, 23:02 pm
Siguiendo el ejemplo que has hecho tú, puedes hacer lo siguiente:

Código:
Private Sub Command1_Click()

    Dim Archivo As String, Busca As String, TODO As String
    Dim NumArchivo As Integer, x As Long
   
    Archivo = "C:\archivo.txt"
    NumArchivo = FreeFile()
   
  Open Archivo For Input As #NumArchivo
    TODO = Input(LOF(1), 1)
       
    For x = 1 To Len(TODO)
        If Mid(TODO, x, 1) = "," Then TODO = Mid(TODO, 1, x - 1) & Mid(TODO, x + 1, Len(TODO) - x1)
    Next x
       
  Close #NumArchivo
   
  Open Archivo For Output As #NumArchivo
    Print #NumArchivo, TODO
  Close #NumArchivo
   
    Text1 = TODO
   
End Sub

Los problemas que puedes tener y que me han pasado a mi en algún programa es:
-que si pasas tu archivo.txt a un textbox tienes que tener en cuenta que el límite de un textbox son 64K.
-otra cosa que me ocurrió es que una persona me abrió  el .txt con el Microsoft Word y tras modificarlo lo guardó. No puedes imaginar la cantidad de código que añade este programa y que me falseaba lo que yo buscaba...

Que tengas suerte


Título: Re: Duda con archivos de texto
Publicado por: NYlOn en 23 Septiembre 2006, 23:50 pm
Podes usar la funcion Replace y no te haces tanto lio. Podes hacer algo asi:
Código:
Todo = Replace(Todo, ",", "")
Despues usas la variable "Todo" que ya no contiene ninguna coma.

Saludos.-