Visual Basic Feil: Senket Out of Range

Visual Basic Feil: Senket Out of Range


En matrise er en gjenstand i Visual Basic brukes til å lagre en serie av verdier som har en logisk forhold. Arrays avvike fra skalar variabler, som kan inneholde bare én verdi om gangen. I motsetning til dette, kan en matrise holde en eller flere serier av verdier, kalt dimensjoner. Hver rekke har minst én dimensjon, og hver dimensjon har et gyldig område av verdier. Hvis du prøver å få tilgang til et element utenfor dette området, vil programmet kaste en "senket utenfor rekkevidde" feil.

Array Referencing

Array dimensjoner er bestilt, og blir referert til av en indeks eller senket nummer. Det første elementet i en dimensjon er alltid nummerert null, og hver etterfølgende element er en større. Tenk deg at du var å skape en rekke studenter - "studenter ()" - i en klasse med seks studenter: Andrea, Frank, Richard, Rachel, Melissa og Kacie. Du ville tildele og hente array elementer av sin indeks, eller senket nummer. For å tildele Andrea til det første elementet, vil koden lese:

studenter (0) = "Andrea"

Du leser fra en rekke ved å angi indeksen, også. For eksempel, hvis du ønsket å vise en meldingsboks med den siste studenten i listen, vil koden lese:

MsgBox studenter (5)

Runtime Error

Visual Basic er et kompilert språk. Du kan skrive kode som vil kompilere med hell, men som forsøker å skrive eller lese fra en rekke element utenfor de nedre og øvre grenser definert for det. Under kjøring vil dette føre til at programmet til å kaste et unntak, og vise feilmeldingen "Senket Out of Range". Eliminere dette problemet ved å forstørre eller krymper grensene for klyngen som trengs.

Dim og ReDim

Du bruker Visual Basic er "Dim" statement å erklære en tabellens dimensjoner og grenser. I sin enkleste form er "Dim" statement syntaks:

Dim ArrayName (indeks) som datatype.

"ArrayName" er navnet på din array, og datatypen kan være noen gyldig skalar variabel type. Hvis du angir en indeks for array, er det en fast verdi, og kan ikke endres. Men hvis du utelater en verdi mellom parentes, mener Visual Basic erklært array å være dynamisk. Dynamiske arrays kan bli endret når som helst ved å bruke "ReDim" statement.

betraktninger

Den "ReDim" statement kan krympe eller forstørre et dynamisk array. Men med mindre du inkluderer valgfri søkeordet "bevare", alle tabellverdiene vil bli tilbakestilt til standard, tom verdi. Matriser av heltall vil ha hvert element satt til null, for eksempel.

Du kan forstørre en rekke iterativt ved å bruke noen form for looping algoritme og en teller. Den "ReDim" statement kan ta kombinasjoner av skalar variabler og numeriske konstanter som argumenter. Dermed kan du forstørre tellervariabelen etter en i løpet av hver iterasjon.

Du kan teste de øvre og nedre grensene for en matrise med "GetUpperBound" og "GetLowerBound" kommandoer. Du kan redusere ut av rekkevidde unntak ved å teste disse grensene før du leser fra eller skriver til en matrise element.