Hola a todos, soy nuevo en el foro y en visual basic. Estoy haciendo un programa que compara 2 archivos de texto predeterminados (ale y ale2), los compara linea por linea y detecta las "coordenadas" del o los caracteres diferentes entre estos archivos
(no detecta cual es el caracter que difiere, solo sus coordenadas). una vez ya ha comparado muestra el resultado en una pantalla que ha sido designada para esta función, y también se graba esta información en un archivo de texto llamado escrito2.
En la pantalla se muestra la fecha en formato "dd/mm/yyyy" y también la hora en formato "hh:mm:ss" en una sola linea, en las lineas siguientes se muestra la ubicación de del caracter diferente, con el sig. formato "linea distinta
Nº x Caracter X".
Si se necesita comparar nuevamente, en la pantalla se ve una actualización de la fecha y la hora y también indica las lineas que aún son diferentes y elimina las lineas que ya fueron corregidas.
En el archivo de texto se muestra tan solo las "coordenadas" del caracter, y si necesito comparar nuevamente , se agregan los resultados a continuación de las lineas generadas anteriormente.
Lo que necesito es que al momento de comparar se genere un archivo de texto nuevo cada vez que se compare, con la fecha y la hora a la cual se hizo la comparación
y también necesito que el programa me diga cual es el caracter diferente, no las "coordenadas" y las copie en un archivo de texto.
Muchas gracias de antemano, estaré muy agradecido por cualquier ayuda que se me pueda otorgar.
.......................................programa............................
Imports System
Imports System.IO
Imports System.Collections
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Comparar()
End Sub
'La siguiente funcion compara fila a fila 2 archivos de texto.
Private Sub Comparar()
TextBox1.Text = DateTime.Now().ToString("dd/MM/yyyy hh:mm:ss tt") + vbCrLf 'incluye la fecha (dd/mm/aa, hh:mm:ss) en el text.box
Dim direccion1 As String = "E:\Documents and Settings\bhenriquez\Escritorio\Juan.RetamalM\PRUEBAS 1\PRUEBA 1\ale.txt" ' direccion archivo texto
Dim direccion2 As String = "E:\Documents and Settings\bhenriquez\Escritorio\Juan.RetamalM\PRUEBAS 1\PRUEBA 1\ale2.txt" ' direccion archivo texto
Dim objReader1 As New StreamReader(direccion1)
Dim objReader2 As New StreamReader(direccion2)
Dim LineaDiag As String = ""
Dim LineaPatr As String = ""
Dim contador As Integer = 0
'-------------------------------------------------
Do
contador = contador + 1
LineaDiag = objReader1.ReadLine()
LineaPatr = objReader2.ReadLine()
If LineaPatr Is Nothing Then
Exit Do 'Si sLine1 es EOF, sale. La sentencia Do sin esta linea (exit) me compara los string 1 vez adicional al EOF.
End If
'Comparacion entre lineas de archivo de texto
If (LineaDiag <> LineaPatr) Then
TextBox1.Text += "Linea distinta n°" + Convert.ToString(contador) + " Caracter "
descrimina(LineaDiag, LineaPatr, contador)
TextBox1.Text += vbCrLf
End If
Loop
objReader1.Close()
objReader2.Close()
'-------------------------------------------------
End Sub
Private Sub descrimina(ByVal linea1 As String, ByVal linea2 As String, ByVal contador As Integer)
Dim direccion3 As String = "E:\Documents and Settings\bhenriquez\Escritorio\Juan.RetamalM\PRUEBAS 1\PRUEBA 1\escrito2.txt" ' direccion archivo texto")
Dim objWriter3 As New StreamWriter(direccion3, True) 'indica caracteres distintos entre las lineas desiguales
Dim i As Integer
For i = 0 To Len(linea2) - 1
If (linea1(i) <> linea2(i)) Then
objWriter3.WriteLine(" Linea distinta n°" + Convert.ToString(contador) + " caracter " + Convert.ToString(i + 1))
TextBox1.Text += " " + Convert.ToString(i + 1) + " "
End If
Next
objWriter3.Close()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End Sub
End Class