Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: DoPeY-BBS en 10 de Julio 2012, 23:50
-
Saludos
Al ejecutar el código (Ctrl+F5), sobre el formulario te aparecerá el mensaje "El número de coches en la hora cero fue 14". Modifica el programa introduciendo, debajo de Option Explicit, una línea con Option Base 1. Prueba a ejecutarlo y te aparecerá un mensaje del tipo: "Error en tiempo de ejecución. El subíndice está fuera del intervalo". Efectivamente, al poner Option Base 1 los valores que puedes usar en el código como localizador de una variable del array serán los comprendidos entre 1 y 24. Al estar usando la variable Numerodecoches(0), Visual Basic detecta la incoherencia y genera un error.
Option Explicit
Dim Numerodecoches(24) As Integer
Private Sub Form_Load()
Show
Numerodecoches(0) = 14
Print
Print "El número de coches en la hora cero fue "; Numerodecoches(0)
End Sub
Si yo coloco este otro código y le coloco 16 a la variable Numerodecoches(16) = 14, esta no da error sin embargo si coloco 25, si ¿porque pasa este comportamiento?
Option Explicit
Option Base 1
Dim Numerodecoches(24) As Integer
Private Sub Form_Load()
Show
Numerodecoches(16) = 14
Print
Print "El número de coches en la hora cero fue "; Numerodecoches(16)
End Sub
-
Hola dopey, cuando usas un array que has declarado como
Dim Numerodecoches(24) As Integer
no puedes usar un índice para la variable que a tí se te ocurra, sino solo dentro del rango que has declarado. Por ejemplo, para la declaración anterior puedes usar Numerodecoches(1), Numerodecoches(2), Numerodecoches(3), ... Numerodecoches(24)
pero si intentas usar Numerodecoches(25) te dará un error porque tú has dicho que los índices solo van a llegar hasta 24, entonces no puedes usar un índice 25 porque el ordenador no entiende qué significado tendría eso.
El ordenador cuenta desde cero (ó desde 1 si has puesto Option Base 1).
Por ejemplo si declaras
Option Base 1
Dim Numerodecoches(4) As Integer
Solo podrás usar Numerodecoches(1), Numerodecoches(2), Numerodecoches(3) y Numerodecoches(4) porque al declarar la variable has dicho que los índices van a estar entre 1 y 4. Si trataras de usar otro índice te dará un error.
-
Gracias por el dato
-
Fíjate que el array lo que representa son los coches que han pasado cada hora del día y el día tiene 24 horas. Entonces coches(25) no tendría sentido porque significaría los coches que han pasado en la hora 25 y esto no tiene sentido ;)