webForumDet fria alternativet

Matris

9 svar · 291 visningar · startad av Jaar

JaarMedlem sedan juli 2001434 inlägg
#1

Försöker mig på att jobba med en array med arrayer ...

exempel

Dim myArray(3,3)

myArray(1,1) = "1-1"
myArray(1,2) = "1-2"
myArray(1,3) = "1-3"

myArray(2,1) = "2-1"
myArray(2,2) = "2-2"
myArray(2,3) = "2-3"

myArray(3,1) = "3-1"
myArray(3,2) = "3-2"
myArray(3,3) = "3-3"

Sedan vill jag skicka in en av de lagrade arrayerna in i en funktion

function testArray(myTestArray)
  for i = 1 to UBound(myTestArray)
    if myTestArray(i) = "2-2" then
       testArray = true
    end if
  next
  testArray = false
end function

for x = 1 to 3
  if testArray(myArray(x)) then
    response.write "Found it"
  end if
next

Men det vill sig inte ... går det inte att göra så eller är det nåt annat kai-ko?

m_soderlundMedlem sedan sep. 20026 425 inlägg
#2

Oavsett om mytestArray är 2-2 och testArray då blir satt till true, så blir testArray några rader längre ner ändå satt till false. Ska det verkligen vara så? ;)

JaarMedlem sedan juli 2001434 inlägg
#3

Hehe... van vid ett return-anrop... och att funktionen slutar exekvera ... får skylla på det.. :)
Skrev det hela som exempel...

ingen aning om hur man kan lösa det?

Felet uppstår här:
testArray(myArray(x))

SubScript out of range...

Mc FettoMedlem sedan nov. 20022 355 inlägg
#4

vad har x för värde`?

JaarMedlem sedan juli 2001434 inlägg
#5

1

JaarMedlem sedan juli 2001434 inlägg
#6

Svenska felmeddeladnet :
Felaktigt matrisindex

OveRRidEMedlem sedan feb. 200112 078 inlägg
#7

En array börjar alltid på 0. Således; om du har en vektor med fem poster finns följande matrisindex i vektorn:

0, 1, 2, 3, 4

Jag gissar att när du räknar från 1 och uppåt så letar allså VBScript efter ett matrisindex som är 5, vilket inte finns. Men, jag har inte kollat närmare på det. ;)

JaarMedlem sedan juli 2001434 inlägg
#8

Om jag stegar bara steg 1 och 2 så kommer det ändå samma fel. X är ju = 1 ...

Jag har löst det genom att skicka med hela matrisen just nu och den första index-varabeln ... men det är ju inte direkt så jag vill ha det...

Engine^Medlem sedan dec. 20003 887 inlägg
#9

Du skapar en tvådimensionell matris och vill skicka den som endimensionell.

testArray(myArray(x))

Jag är tyvärr inte hemma på hur VBScript hanterar arrays, men det sättet känns fel.

Jag funderar på hur VBScript tolkar myArray(x) som. Blir det en magisk typecast till en endimensionell matris?

Jag skulle skriva om funktionen

Function testArray(myTestArray, intIndex)
  For i = 1 To UBound(myTestArray, 2)
    If myTestArray(intIndex, i) = "2-2" Then
       testArray = true

       Exit Function
    End If
  Next

  testArray = false
End Function

For x = 1 To 3
  If testArray(myArray, x) Then
    Response.Write "Found it"
  End If
Next
JaarMedlem sedan juli 2001434 inlägg
#10

Det var så jag gjorde ... tack för all hjälp

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)