webForumDet fria alternativet

Slumpa fram bilder. Array problem

16 svar · 285 visningar · startad av Steveking

StevekingMedlem sedan aug. 2001150 inlägg
#1

Tjena.
Jag har en katalog med bilder.
4st *.jpg

Jag vill slumpa fram dom med detta script. Vet inte vad jag har gjort för fel. Men är ganska ny på arrays.


dim allpictures()

allpicturesarray = array("1.jpg", "2.jpg", "3.jpg", "4.jpg")

dim choosen(2)
dim i,pictures,choice

randomize
for i = 0 to 2
[b]choice = int((ubound(allpictures)-i)*rnd())[/b]
choosen(i) = allpictures(choice)
allpictures(choice) = allpictures(ubound(allpictures)-i)
next

Sen försöker jag visa bilderna med detta

<% =allpicturesarray(0) %>

samt

<% =allpicturesarray(1) %>

Får felet
Microsoft VBScript runtime error '800a0009'

Subscript out of range: 'ubound'

index.asp, line 190

Line 190 är fetmarkerad.

------------------
Mvh :)

[Redigerat av Steveking den 23 jan 2002]

@ndersMedlem sedan juni 200032 969 inlägg
#2

Det ser ut som att du angett fel array.

choice = int((ubound([b]allpicturesarray[/b])-i)*rnd())

Mvh,

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Du använder fel namn, allpictures istället för allpicturesarray

for i = 0 to 2
choice = int((ubound(allpicturesarray)-i)*rnd())
choosen(i) = allpicturesarray(choice)
allpicturesarray(choice) = allpicturesarray(ubound(allpicturesarray)-i)
next

------------------
essentitia preter non sans multiplicandum

StevekingMedlem sedan aug. 2001150 inlägg
#4

Jag hade visst missat allihopa. Va ju lite klantigt.

Måste den alltid heta array på slutet?

försökte med allpictures = array("1.jpg", "2.jpg", "3.jpg", "4.jpg")

men fick jag type missmatch

------------------
Mvh :)

[Redigerat av Steveking den 23 jan 2002]

@ndersMedlem sedan juni 200032 969 inlägg
#5

Den får heta precis vad du vill.

Hur ser din kod ut nu, och vilken rad pekar felmeddelandet på?

Mvh,

StevekingMedlem sedan aug. 2001150 inlägg
#6

Detta fungerar

	<%
dim allpictures()

allpicturesarray = array("1.jpg", "2.jpg", "3.jpg", "4.jpg")

dim choosen(2)
dim i,pictures,choice

randomize
for i = 0 to 2
choice = int((ubound(allpicturesarray)-i)*rnd())
choosen(i) = allpicturesarray(choice)
allpicturesarray(choice) = allpicturesarray(ubound(allpicturesarray)-i)
next
%>

men detta blir type missmatch

	<%
dim allpictures()

[b]allpictures = array[/b]("1.jpg", "2.jpg", "3.jpg", "4.jpg")

dim choosen(2)
dim i,pictures,choice

randomize
for i = 0 to 2
choice = int((ubound(allpicturesarray)-i)*rnd())
choosen(i) = allpicturesarray(choice)
allpicturesarray(choice) = allpicturesarray(ubound(allpicturesarray)-i)
next
%>

Blandas den ihop med dim?
------------------
Mvh :)

[Redigerat av Steveking den 23 jan 2002]

@ndersMedlem sedan juni 200032 969 inlägg
#7

Om du tar bort () efter din dim av arrayen?

StevekingMedlem sedan aug. 2001150 inlägg
#8

Det verkar funka.

Men jag märkte att den visar samma bild 2ggr.

------------------
Mvh :)

@ndersMedlem sedan juni 200032 969 inlägg
#9

Ja, det är inte helt omöjligt att den gör det. Du får ju själv kontrollera att det inte sker.

Mvh,

PatrikBMedlem sedan mars 20002 836 inlägg
#10

Hur ser koden ut där du visar bilderna?

cya,
PatrikB

------------------
-=* IF there is a wrong way to do something, then someone will do it *=-

StevekingMedlem sedan aug. 2001150 inlägg
#11

<% =allpicturesarray(0) %>
samt
<% =allpicturesarray(1) %>

då verkar det ju iofs som jag pekar på vilken bild som skall visas

------------------
Mvh :)

[Redigerat av Steveking den 23 jan 2002]

StevekingMedlem sedan aug. 2001150 inlägg
#12

Hur borde jag visa bilderna?

------------------
Mvh :)

LarsGMedlem sedan dec. 200012 464 inlägg
#13

Du borde använda choosen när du visar bilderna. Vad är det för mening med att slumpa ut 3 av 4 bilder?

------------------
essentitia preter non sans multiplicandum

@ndersMedlem sedan juni 200032 969 inlägg
#14

Ska du inte använda arrayen choosen till det?

StevekingMedlem sedan aug. 2001150 inlägg
#15

% =allpicturesarray(choice) %> ?

ursäkta min tröghet

------------------
Mvh :)

LarsGMedlem sedan dec. 200012 464 inlägg
#16

Om du vill visa alla bilderna i choosen

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

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 23 jan 2002]

StevekingMedlem sedan aug. 2001150 inlägg
#17

Jag löste det såhär istället. Tycker det verkar enklare.

randomize
bild1 = Int(Rnd * 3) +1
bild2 = Int(Rnd * 3) +1
DO UNTIL NOT cint(bild2) = cint(bild1)
	bild2 = Int(Rnd * 3) +1
LOOP

------------------
Mvh :)

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