none
generar función en nuevo archivo

    Pregunta

  • hola necesito de su ayuda, al ser clic en el botón, crea nuevo archivo y carpeta pero la función de  reemplazos los realiza en el archivo original y yo quiero que los realice en el nuevo archivo creado. acá les dejo el código:

    Private Sub Command1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            My.Computer.FileSystem.CopyFile("C:\Users\Mipc\Downloads\sip.txt",
    "C:\Users\Mipc\Downloads\" & TextBox3.Text)
            IO.Directory.CreateDirectory("C:\Users\Mipc\Downloads\foto\" & TextBox3.Text)
    
            If String.IsNullOrEmpty(TextBox1.Text) _
            OrElse String.IsNullOrEmpty(TextBox2.Text) _
            OrElse String.IsNullOrEmpty(TextBox3.Text) _
            OrElse String.IsNullOrEmpty(TextBox4.Text) _
            OrElse String.IsNullOrEmpty(TextBox5.Text) _
            OrElse String.IsNullOrEmpty(TextBox6.Text) _
            OrElse String.IsNullOrEmpty(TextBox7.Text) _
            OrElse String.IsNullOrEmpty(TextBox8.Text) _
            OrElse String.IsNullOrEmpty(TextBox9.Text) _
            OrElse String.IsNullOrEmpty(TextBox10.Text) _
            OrElse String.IsNullOrEmpty(RichTextBox1.Text) Then
    
                MessageBox.Show("¡Datos incompletos!")
                Exit Sub
            End If
            Dim Result As Integer = 0
    
            Result = Reemplazar_Texto(TextBox1.Text, TextBox2.Text, TextBox3.Text)
            Result += Reemplazar_Texto(TextBox1.Text, TextBox4.Text, TextBox5.Text)
            Result += Reemplazar_Texto(TextBox1.Text, TextBox6.Text, TextBox7.Text)
            Result += Reemplazar_Texto(TextBox1.Text, TextBox8.Text, RichTextBox1.Text)
            Result += Reemplazar_Texto(TextBox1.Text, TextBox9.Text, TextBox10.Text)
    
    
            MessageBox.Show(String.Format("{0} de {1} archivos modificados", Result, 5))
            TextBox1.Text = ""
            TextBox3.Text = ".htm"
            TextBox5.Text = ""
            TextBox7.Text = ""
            TextBox10.Text = ""
            RichTextBox1.Text = ""
    
        End Sub



    • Editado Ignacionach martes, 20 de septiembre de 2016 3:40
    martes, 20 de septiembre de 2016 3:03

Respuestas

  • Ignacionach,

    Si estas copiando el archivo 'sip.txt' en un nuevo archivo (dentro de la carpeta Downloads) entonces manda como argumento del primer parámetro el nuevo archivo (archivo copia):

    Result = Reemplazar_Texto(Path.Combine("C:\Users\Mipc\Downloads", TextBox3.Text), TextBox2.Text, ...)



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Ignacionach martes, 20 de septiembre de 2016 5:20
    martes, 20 de septiembre de 2016 3:53

Todas las respuestas

  • Ignacionach,

    Para escribir en otro archivo debes agregar un nuevo parámetro al procedimiento 'Reemplazar_Texto' conteniendo la nueva ruta y nombre de archivo sobre el que se escribirá el texto:

    Private Function Reemplazar_Texto(ByVal RutaArchivo As String,
                                        ByVal NuevaRutaArchivo As String,
                                        ByVal La_cadena As String,
                                        ByVal Nueva_Cadena As String) As Integer
    
            Try
                Dim ContenidoArchivo As String = System.IO.File.ReadAllText(RutaArchivo)
    
                ContenidoArchivo = ContenidoArchivo.Replace(La_cadena, Nueva_Cadena)
    
                System.IO.File.WriteAllText(NuevaRutaArchivo, ContenidoArchivo)
    
                Return 1
            Catch ex As Exception
                MessageBox.Show(String.Concat("Error: ", ex.Message))
    
                Return 0
            End Try
        End Function

    Llamada al procedimiento:

    Result = Reemplazar_Texto(Text1.Text, "D:\NuevoArchivo.txt", Text2.Text, Text3.Text)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 20 de septiembre de 2016 3:26
  • Por ahi  explique mal soy novato en esto es mi primer proyecto, lo que busco es que el contenido del archivo.txt se duplique con el nombre del con el nombre de TexBox3

     My.Computer.FileSystem.CopyFile("C:\Users\Mipc\Downloads\sip.txt",
    "C:\Users\Mipc\Downloads\" & TextBox3.Text)

    Y ese archivo sea el que se modifique y no el archivo original que se nombra en el TexBox1.

    Public Class Form1
        Private Function Reemplazar_Texto(ByVal RutaArchivo As String,
                    ByVal La_cadena As String,
                    ByVal Nueva_Cadena As String) As Integer
    
            Try
                Dim ContenidoArchivo As String = System.IO.File.ReadAllText(RutaArchivo)
    
                ContenidoArchivo = ContenidoArchivo.Replace(La_cadena, Nueva_Cadena)
    
                System.IO.File.WriteAllText(RutaArchivo, ContenidoArchivo)
    
                Return 1
            Catch ex As Exception
                MessageBox.Show(String.Concat("Error: ", ex.Message))
    
                Return 0
            End Try
        End Function
    
    
        Private Sub Command1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            My.Computer.FileSystem.CopyFile("C:\Users\Mipc\Downloads\sip.txt",
    "C:\Users\Mipc\Downloads\" & TextBox3.Text)
            IO.Directory.CreateDirectory("C:\Users\Mipc\Downloads\foto\" & TextBox3.Text)
    
            If String.IsNullOrEmpty(TextBox1.Text) _
            OrElse String.IsNullOrEmpty(TextBox2.Text) _
            OrElse String.IsNullOrEmpty(TextBox3.Text) _
            OrElse String.IsNullOrEmpty(TextBox4.Text) _
            OrElse String.IsNullOrEmpty(TextBox5.Text) _
            OrElse String.IsNullOrEmpty(TextBox6.Text) _
            OrElse String.IsNullOrEmpty(TextBox7.Text) _
            OrElse String.IsNullOrEmpty(TextBox8.Text) _
            OrElse String.IsNullOrEmpty(TextBox9.Text) _
            OrElse String.IsNullOrEmpty(TextBox10.Text) _
            OrElse String.IsNullOrEmpty(RichTextBox1.Text) Then
    
                MessageBox.Show("¡Datos incompletos!")
                Exit Sub
            End If
            Dim Result As Integer = 0
    
            Result = Reemplazar_Texto(TextBox1.Text, TextBox2.Text, TextBox3.Text)
            Result += Reemplazar_Texto(TextBox1.Text, TextBox4.Text, TextBox5.Text)
            Result += Reemplazar_Texto(TextBox1.Text, TextBox6.Text, TextBox7.Text)
            Result += Reemplazar_Texto(TextBox1.Text, TextBox8.Text, RichTextBox1.Text)
            Result += Reemplazar_Texto(TextBox1.Text, TextBox9.Text, TextBox10.Text)
    
    
            MessageBox.Show(String.Format("{0} de {1} archivos modificados", Result, 5))
            TextBox1.Text = ""
            TextBox3.Text = ".htm"
            TextBox5.Text = ""
            TextBox7.Text = ""
            TextBox10.Text = ""
            RichTextBox1.Text = ""
    
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            Button1.Text = "Buscar y Reemplazar"
            Me.Text = "Buscar cadenas y frases en un archivo y reemplazarlas"
        End Sub



    • Editado Ignacionach martes, 20 de septiembre de 2016 3:41
    martes, 20 de septiembre de 2016 3:40
  • Ignacionach,

    Si estas copiando el archivo 'sip.txt' en un nuevo archivo (dentro de la carpeta Downloads) entonces manda como argumento del primer parámetro el nuevo archivo (archivo copia):

    Result = Reemplazar_Texto(Path.Combine("C:\Users\Mipc\Downloads", TextBox3.Text), TextBox2.Text, ...)



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Ignacionach martes, 20 de septiembre de 2016 5:20
    martes, 20 de septiembre de 2016 3:53
  • Muchas Gracias por tu gran ayuda!!! el novato fui yo jejeje hice lo siguiente y genero la función que quería.

    Result = Reemplazar_Texto("C:\Users\Mipc\Downloads\" & TextBox3.Text, TextBox2.Text, TextBox3.Text) Result += Reemplazar_Texto("C:\Users\Mipc\Downloads\" & TextBox3.Text, TextBox4.Text, TextBox5.Text) Result += Reemplazar_Texto("C:\Users\Mipc\Downloads\" & TextBox3.Text, TextBox6.Text, TextBox7.Text) Result += Reemplazar_Texto("C:\Users\Mipc\Downloads\" & TextBox3.Text, TextBox8.Text, RichTextBox1.Text) Result += Reemplazar_Texto("C:\Users\Mipc\Downloads\" & TextBox3.Text, TextBox9.Text, TextBox10.Text)



    • Editado Ignacionach martes, 20 de septiembre de 2016 5:19
    martes, 20 de septiembre de 2016 5:18
  • Ignacionach,

    Te recomiendo analizar el código que se te proporciona, no limites a copiar y pegar. Nota que coloco 3 puntos suspensivos al final de la instrucción indicando que continúes con los parámetros respectivos.

    Algo que noto es que mencionas que el objeto TextBox3 contiene el nombre del nuevo archivo (copia), sin embargo veo que el mismo objeto (TextBox3) lo tienes como tercer argumento de la primera llamada al procedimiento, imagino que falta actualizar los valores, ¿verdad?

    Dim NuevaRuta As String = Path.Combine("C:\Users\Mipc\Downloads", TextBox3.Text)
    
    Result = Reemplazar_Texto(NuevaRuta, TextBox2.Text, TextBox3.Text) 'Revisar!
    Result += Reemplazar_Texto(NuevaRuta, TextBox4.Text, TextBox5.Text)
    Result += Reemplazar_Texto(NuevaRuta, TextBox6.Text, TextBox7.Text)

    Revisa el código, depura en caso sea necesario y actualiza según tus necesidades.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 20 de septiembre de 2016 5:23
  • Excelente!!! tienes mucha razón un consulta mas donde puedo encontrar sobre codificar codigos, porque los cambios de los TextBox los realiza perfecto pero si escribo la palabra  El hombre es "innegociable", afirmó  no me llega como yo quiero   <p>El hombre es &quot;innegociable&quot;, afirm&oacute;</p> ya que estoy trabajando con archivo de diseño web.
    martes, 20 de septiembre de 2016 5:51