Visual Basic.NET - No encuentro el error

 
Vista:

No encuentro el error

Publicado por Jose (3 intervenciones) el 31/05/2011 22:47:42
Hola a todos.
Soy nuevo en esto y no encuentro el error,por vueltas que le doy.
Ejecuto el programa,para comprobar,y me deja,pero en un momento dado,me da Null Reference Exception, en esta parte concreta:

For Vuelta = 1 To Longitud
TextoIntermedio(Vuelta) = TextoOriginal.Substring(Vuelta, 1)
Next Vuelta

(Longitud es la longitud de la cadena,TextoIntermedio una matriz en la que quiero guardar uno a uno cada uno de los carácteres del texto guardado en TextoOriginal)

El caso es que le he dado vueltas y vueltas y nada.
Muchas gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 29
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No encuentro el error

Publicado por apacheco (98 intervenciones) el 09/06/2011 10:08:07
Mira el valor de Vuelta en el momento del error y te indicará si has sobrepasado el valor maximo de elementos de la tabla TextoIntermedio.

Es decir :

Supongamos que el TextoOriginal tiene 10 posiciones. Si defines TextoIntemedio[0 to 9] te dara problemas porque el elemento de indice 0 no se rellenara y al procesar el ultimo (10) esta por encima del tope. En este caso deberias codificarlo:

For Vuelta = 1 To Longitud
TextoIntermedio(Vuelta-1) = TextoOriginal.Substring(Vuelta, 1)
Next Vuelta

Si has definido TextoIntemedio[1 to 10] la codificacion es correcta

Prueba con un textooriginal pequeño en modo debug mira el valor de Vuelta. Eso te indicara donde esta el fallo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No encuentro el error

Publicado por Diego (81 intervenciones) el 01/06/2011 10:01:52
Deberías incluir todo el código o por lo menos las declaraciones sino nos tenemos que basar en intuiciones.
Probablemente sea ---> Dim Longitud as Integer = Cadena.Lenght
Prueba con Longitud as Integer = Cadena.Lenght -1 sino
¿Podrias mostrar mas código?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No encuentro el error

Publicado por Jose (3 intervenciones) el 07/06/2011 05:45:47
Muchas gracias,no contesté antes porque estuve unos días sin internet.
Muchas gracias otra vez.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No encuentro el error

Publicado por Jose (3 intervenciones) el 01/06/2011 17:56:20
Es un windows Form y cree un modulo para que las variables me valieran en todo el programa(igual hice mal,pero ya digo que soy nuevo en esto,jeje)(es lo que suelo hacer)
El contenido del modulo es este:

Module Module1

Public TextoOriginal As String
Public TextoCambiado As String
Public Longitud As Integer
Public TextoIntermedio() As String

End Module

y el del form:

Public Class Form1
Private Sub BotonCodificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BotonCodificar.Click
TextoOriginal = TextBox1.Text
Longitud = TextoOriginal.Length

For Vuelta = 0 To (Longitud)
TextoIntermedio(Vuelta) = TextoOriginal.Substring(Vuelta, 1)
Next Vuelta

End Sub
End Class

Como ves,no llevo casi nada y no me funciona..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No encuentro el error

Publicado por Diego (81 intervenciones) el 03/06/2011 09:24:06
No probaste lo que te conteste, aki tienes la solucion sobre tu propio codigo

'GUARDAMOS EL TAMAÑO DE LA CADENA
Longitud = TextoOriginal.Length - 1

'ASIGNAMOS EL TAMAÑO DEL ARRAY QUE CONTENDRA LOS CARACTERES DE LA CADENA
ReDim TextoIntermedio(Longitud)

'RECORREMOS LAS LETRAS DE LA CADENA Y LAS ALMACENAMOS EN EL ARRAY
For Vuelta = 0 To (Longitud)
TextoIntermedio(Vuelta) = TextoOriginal.Substring(Vuelta, 1)
Next Vuelta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar