Hola namiwis
Antes de nada, muchas gracias por responder. Tras haberle dado muchas vueltas en unas cuantas horas, he llegado a la siguiente conclusión:
En vez de hacerlo mediante consola, lo estoy intentado hacer con un formulario de windows. También añadir que lo intento con un "dataGridView" el cuál aun así me sigue dando problemas (porque todavía soy novato en esto del visual basic).
Volviendo al asunto, te voy a poner un buen trozo del .txt en cuestión:
Código .txt:
Ver original[1]
MaxLength=30
Defini=Tipo de documento
ClaseCamp=Input
TipoDato=Caracter
CampoGraba=1
Item=@RESVENTAS
Ayuda=Solo saldrán los tipos de documento que tengan definida serie
Imprescindible=Si
PDAVISIBLE=SI
[2]
MaxLength=2
Defini=Serie albarán
ClaseCamp=Input
TipoDato=Caracter
CampoGraba=2
ItemSource=DataBaseName:BaseGes32;TableName:tSeriesAlbaranes;IndexField:0;
Modificable=No
CuadraIzquierda=48
Ayuda=Son las series definidas para el tipo de documento seleccionado
Imprescindible=Si
PDAVISIBLE=SI
Como bien se puede observar, yo solo quiero coger ciertas "filas", es por ello que he recurrido a este código (algo chapuzas, lo sé):
Código vb:
Ver originalImports System.IO
Public Class Form1
Dim celdas(4) As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim mascara As System.IO.FileInfo = New FileInfo("C:\Program Files (x86)\Distribucion\mscr\mscr_037.msc")
tabla.ColumnCount = 4
tabla.Columns(0).Name = "CAMPO"
tabla.Columns(1).Name = "TIPO"
tabla.Columns(2).Name = "TAMAÑO MAXIMO"
tabla.Columns(3).Name = "DEFINICION"
Dim tablabd(2) As String
Dim i As Integer = 0
'Primero sacaremos las tablas para luego poderlas asociarlas a los campos
Try
Dim abrir2 As StreamReader = mascara.OpenText
Dim linea2 As String
Do While abrir2.Peek() > 0
linea2 = abrir2.ReadLine()
If linea2 Like "FicheroDatos=*" Then
tablabd(i) = Replace(linea2, "FicheroDatos=", "")
i = i + 1
End If
Loop
Catch ex As Exception
End Try
MessageBox.Show(tablabd(1))
Try
Dim abrir As StreamReader = mascara.OpenText
Dim linea As String
Do While abrir.Peek() > 0
linea = abrir.ReadLine()
If linea Like "CampoGraba*=*" Then
If linea Like "CampoGraba(%)=*" Then
Dim reemplazo As String = Replace(linea, "CampoGraba(%)=", tablabd(1))
celdas(0) = reemplazo
Else
Dim reemplazo As String = Replace(linea, "CampoGraba=", tablabd(0))
celdas(0) = reemplazo
End If
End If
If linea Like "TipoDato*=*" Then
Dim reemplazo As String = Replace(linea, "TipoDato=", "")
celdas(1) = reemplazo
End If
If linea Like "MaxLength*=*" Then
Dim reemplazo As String = Replace(linea, "MaxLength=", "")
celdas(2) = reemplazo
End If
If linea Like "Defini*=*" Then
Dim reemplazo As String = Replace(linea, "Defini=", "")
celdas(3) = reemplazo
End If
If Not celdas(3) Is Nothing Then
Dim lineaCompleta As String() = New String() {celdas(0), celdas(1), celdas(2), celdas(3)}
tabla.Rows.Add(lineaCompleta)
End If
Loop
abrir.Close()
Catch ex As SystemException
MsgBox(ex.Message)
End Try
End Sub
End Class
Bien, te vuelvo a explicar un poco lo que estoy haciendo y lo que quiero conseguir: ahora ha cambiado un poco el enfoque.
He conseguido que se muestre en un datagridview, pero con los siguientes problemas: el primero, se me repite unas diez veces y de forma desordenada los campos que he seleccionado de ese fichero de texto (los coge bien, pero los sitúa mal en el datagridview y encima algunas de esas repeticiones se mezclan con los campos siguientes).
Enlace a una captura donde se muestra: https://gyazo.com/a30d42de4a1ae15ad26808f9966e9f9f
El siguiente problema que tengo es que en la columna donde irían los "CampoGraba" quiero que se muestre para los X campoGraba con el prefijo de una tabla, y para los siguientes campograbas que se muestre con el prefijo de la otra tabla (se que este ultimo punto no me he explicado bien, asi que si no se puede conseguir tampoco pasa nada, es algo opcional para que a mi me resulte mas facil consultar).
Bien, mas o menos queda "algo" explicado los avances que he conseguido, con los correspondientes problemas a mayores que también he conseguido.
un saludo y espero que pueda echarme un cable