webForumDet fria alternativet

Grundläggande hjälp med array

ASP

7 svar · 231 visningar · startad av erka

Medlem sedan dec. 19996 522 inlägg
Frågan#1

Eller detta kanske mer är en loop fråga.

När man benämner ett sådant här "statement"

For i = 0 to ubound(Array1,2)

Vad betyder då exakt i = 0 to unbound ? Jag leker lite med GetRows och ska göra en loop i en loop då får jag felmeddelandet

Invalid 'for' loop control variable

MSN säger följande

You created a For...Next loop that has the same control variable as a loop it is nested inside. Alternately, you may have created a For...Next loop with an illegal control variable. The following demonstrates the correct structure of a For…Next loop.

For counter = start To end [Step step]
    [statements]
    [Exit For]
    [statements]
Next
To correct this error 

Rename the control variable in your For...Next loop to something unique within the scope of the outermost loop.

Vad kan man döpa den till skulle

For a = 0 to ubound(Array1,2)

Fungera, varför fungerar det (det fungerar tror jag)..Mycket tacksam!

Sen en fråga till, när jag skriver ut arrayen med följande

<%=Array1(0, i)%

0 betyder ju positionen, men vad betyder i ?

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

[Redigerat av erka den 21 jun 2001]

Medlem sedan mars 2001484 inlägg
#2

I uttrycket for i=0 to ubound(arraynamn) kontrollerar ubound() antalet positioner i arrayen. Uttrycket innebär alltså "loopa igenom arrayen tills den tar slut".

Ditt fel grundar sig i att du troligen skrivit något liknande detta:

for i=0 to ubound(array1)
for i=0 to ubound(array2)
response.write array(i)
next
next

Logiskt nog blir det lite förvirrat om två nestade loopar ska använda samma loop-variabel. Därför fungerar det, som du säger, betydligt bättre om du byter ut ena i=0 mot t.ex. a=0.

------------------
/ jeps0

Medlem sedan dec. 19996 522 inlägg
#3

jo men jag förstår inte vad det är för skillnad på tex a=0 to unbound och x=0 to unbound.

Vad exakt gör den i detalj, kan man skriva vad som helst eller ?

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

Medlem sedan mars 2001484 inlägg
#4

För det första: det heter ubound() :)

Du kan använda vilken variabel som helst, ja. Själva idén med att ha en ökande variabel i for-loopen är för att du ska kunna skriva ut array-värdet:

for i=0 to ubound(myArray)
response.write myArray(i) & "<br>"
next

------------------
/ jeps0

Medlem sedan juni 200032 967 inlägg
#5

förenkling bara för förståendets skull:

ubound() -> upperbound (övre gräns)
lbound() -> lowerbound (lägre gräns)

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan dec. 19996 522 inlägg
#6

Jag är nog lite trög idag. Om man skriver in något typ y = 0 riskerar man då inte att missa något i loopen ?

Vad fan är skillnaden på dessa tex.

y=10
c=10
y=0
b=0
d=4

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

[Redigerat av erka den 21 jun 2001]

Medlem sedan mars 20007 896 inlägg
#7

En for-loop:

For i = 0 To uBound(anArray)
&nbsp; &nbsp; Response.Write anArray(i) & "<br>"
Next

Den kan tolkas så här:

När temporär_variabel är mellan 0 och anArrays_storlek
&nbsp; &nbsp; Skriv_ut anArrays_plats(temporär_variabel)
Kör_loopen_igen_om_temporär_variabel_inte_är_större_än_anArrays_storlek

Hoppas det inte blev för oförståeligt, men vad jag försöker visa är att temporär_variabel kan vara heta vad som helst, och har ett värde som inte är under 0 och inte är större än anArrays storlek.

Vad fan är skillnaden på dessa tex.

y=10
c=10
y=0
b=0
d=4

Skillnaden är att variablernas värden är olika, och om de skulle användas i en for-loop (For y = 10 To uBound(arrayen)) är deras startvärden olika.

Hoppas min förklaring inte är alltför dimmig, vilket jag tyvärr är rädd för att den är :l
Skyller på en hård arbetsdag...

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

Medlem sedan dec. 19996 522 inlägg
#8

Tackar ! Fattar faktiskt nu, det var nog de tidigare förklaringarna som var lite luddiga.. Inget ont menat men ibland är jag lika seg som deg

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

260 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)