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 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 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
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 Den får heta precis vad du vill.
Hur ser din kod ut nu, och vilken rad pekar felmeddelandet på?
Mvh,
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 Om du tar bort () efter din dim av arrayen?
Det verkar funka.
Men jag märkte att den visar samma bild 2ggr.
------------------
Mvh :)
@ndersMedlem sedan juni 200032 969 inlägg 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 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 *=-
<% =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]
Hur borde jag visa bilderna?
------------------
Mvh :)
LarsGMedlem sedan dec. 200012 464 inlägg 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 Ska du inte använda arrayen choosen till det?
% =allpicturesarray(choice) %> ?
ursäkta min tröghet
------------------
Mvh :)
LarsGMedlem sedan dec. 200012 464 inlägg 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]
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 :)