Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Manejo Substring con Archivos TXT

Estas en el tema de Manejo Substring con Archivos TXT en el foro de .NET en Foros del Web. Buenas Noches Amigos del Forum. Tengo archivo Txt que no posee caracteres de separacion, Ya se ha logrado Inserta los Datos en el DataGridView. Cuando ...
  #1 (permalink)  
Antiguo 08/08/2013, 21:07
Avatar de gonzalezjesus_77  
Fecha de Ingreso: julio-2013
Ubicación: venezuela
Mensajes: 11
Antigüedad: 10 años, 8 meses
Puntos: 0
Información Manejo Substring con Archivos TXT

Buenas Noches Amigos del Forum.

Tengo archivo Txt que no posee caracteres de separacion, Ya se ha logrado Inserta los Datos en el DataGridView. Cuando la rutina termina de Leer el ultimo dato e Insertarlos en el DataGridView

Me da el siguiente error.

"El índice y la longitud deben hacer referencia a una ubicación en la cadena.
Nombre del parámetro: length"

¿Qué hago que no esta bien?
El codigo es Este:

Código:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try

            If (TextBox1.Text <> String.Empty) Then
                Dim leer As New StreamReader(TextBox1.Text)
                Dim texto As String = ""
                Dim dat1, dat2, dat3, dat4, dat5, dat6, dat7, dat8, dat9, dat10, dat11, dat12, dat13, dat14, dat15, dat16, dat17, dat18, dat19, dat20, dat21, dat22, dat23 As String
                While (Not texto Is Nothing)
                    texto = leer.ReadLine()
                    If (Not texto Is Nothing) Then
                        dat1 = texto.Substring(0, 2)
                        dat2 = texto.Substring(2, 3)
                        dat3 = texto.Substring(5, 8)
                        dat4 = texto.Substring(13, 1)
                        dat5 = texto.Substring(14, 25)
                        dat6 = texto.Substring(39, 1)
                        dat7 = texto.Substring(40, 3)
                        dat8 = texto.Substring(43, 8)
                        dat9 = texto.Substring(51, 10)
                        dat10 = texto.Substring(61, 1)
                        dat11 = texto.Substring(62, 7)
                        dat12 = texto.Substring(69, 2)
                        dat13 = texto.Substring(71, 1)
                        dat14 = texto.Substring(72, 8)
                        dat15 = texto.Substring(80, 8)
                        dat16 = texto.Substring(88, 2)
                        dat17 = texto.Substring(90, 2)
                        dat18 = texto.Substring(92, 9)
                        dat19 = texto.Substring(101, 2)
                        dat20 = texto.Substring(103, 2)
                        dat21 = texto.Substring(105, 5)
                        dat22 = texto.Substring(110, 6)
                        dat23 = texto.Substring(116, 3)
                        DataGridView1.Rows.Add(dat1, dat2, dat3, dat4, dat5, dat6, dat7, dat8, dat9, dat10, dat11, dat12, dat13, dat14, dat15, dat16, dat17, dat18, dat19, dat20, dat21, dat22, dat23)
                    End If
                End While

            Else
                MsgBox("Seleccione el archivo a cargar", MsgBoxStyle.Exclamation, "Error")
            End If

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
  #2 (permalink)  
Antiguo 09/08/2013, 11:24
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 8 meses
Puntos: 8
Respuesta: Manejo Substring con Archivos TXT

Intenta poniendo el ReadLine por fuera del While, en el While utilizando InlineAssignHelper, tal vez te ayude.


Código VB.NET:
Ver original
  1. texto = leer.ReadLine()
  2. While (InlineAssignHelper( texto, leer.ReadLine())IsNot Nothing
  3.  
  4. End While
  5. Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
  6.         target = value
  7.         Return value
  8. End Function

Tambien checate que los indices que estas manejando sean correctos, tal vez la ultima linea esta diferente.

Última edición por emmax; 09/08/2013 a las 11:42
  #3 (permalink)  
Antiguo 09/08/2013, 12:30
Avatar de ldcd  
Fecha de Ingreso: enero-2010
Ubicación: Distrito Federal
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 6
Respuesta: Manejo Substring con Archivos TXT

El problema es que el indice de tu substring es mas grande que la longitud de la cadena que acabas de leer. Por ejemplo:
Si tienes la cadena "Hola mundo" caracteres = 9 (por que es base 0)
si haces un substring(8,3) regresa este error, debido a que la longitud no alcanza los 11 caracteres

En este caso por lo que veo la longitud de tu cadena debe de ser de 119 caracteres, pero TODAS tus lineas del archivo deben de ser de por lo menos 119.

Nota: revisa que en tu txt no estés dejando un salto de linea (linea vacía) al final del archivo
  #4 (permalink)  
Antiguo 09/08/2013, 13:19
Avatar de gonzalezjesus_77  
Fecha de Ingreso: julio-2013
Ubicación: venezuela
Mensajes: 11
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Manejo Substring con Archivos TXT

Amigos ldcd y emmax al Analizar sus Sujerencias, el cual me llevo a revizar cada linea del codigo especificamente "dat1 = texto.Substring(0, length:=2)" y asi el resto, observe que las mismas estan bien configuradas, por lo me tome la prevision de revizar el TXT, el cual revize, el mismo posee 709 lineas por lo que fui agregando cada 100 registros en otro TXT hasta llegar a 709 registros y cada vez evaluava la aplicacion, me llevo la sorpresa que al tomar los 709 Registros y correr el programa NO genera el mensaje, y Aca biene lo no esperado en la ULTIMA LINEA de forma poco visible y cuando digo poco visible pasa desapersivido, Halle la causa del problemas, es decir, en contre un caracter "TIPO FLECHA" al final de la ultima linea.

Amigos Muchisimas Gracias por sus Ezfuerzos por Ayudarme , Ya queda Solucionado.

Etiquetas: manejo, substring, textbox, txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:54.