Hej och välkommen till wF!
Omslut gärna kod med kodtaggar ([kod]kod här[/kod]) så blir den mer lättläst.
Vilken är rad 40?
11 svar · 481 visningar · startad av markusp80
Har ett webbgalleri som visar thumbnails i en iframe, som vid klickande ska visa fullformatsbilden i en annan iframe. Fullstorleksbilderna ligger i en mapp, och i denna mapp finns en mapp med namn "thumbs" som innehåller miniatyrbilderna, som har samma namn som motsvarande fullstorleksbild.
Men vid klick på miniatyrbild poppar ett nytt fönster upp där endast nästa och föregående-pilarna visas. Felmeddelandet blir:
-------------------
Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument
/new/gallery/showPic.asp, line 40
-------------------
Hela koden för sidan som ska visa fullstorleksbilden:
------------------------------
<!-- #include file ="_global.asp" -->
<HTML>
<head>
<link href="stil_gal.css" rel="stylesheet" type="text/css">
</head>
<body background="bg_gal_win.gif" bgproperties="fixed" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginheight="0" marginwidth="0">
<%
dir = request("dir")
hl = dir
path = server.mapPath(globalDir & dir)
set fs = server.createObject( "Scripting.FileSystemObject" )
set myFolder = fs.getFolder(path)
l = int(request("nr"))
if l = 1 then
ner = ""
else
ner = "<a href=""showPic.asp?dir=" & dir & "&nr=" & l-1 & "&mx=" & request("mx") & """><img src=""prev.gif"" border=""0""></a>"
end if
if l = int(request("mx")) then
upp = ""
else
upp = "<a href=""showPic.asp?dir=" & dir & "&nr=" & l+1 & "&mx=" & request("mx") & """><img src=""next.gif"" border=""0""></a>"
end if
response.write("<table border=0 cellpadding=5 cellspacing=0 align=center><tr>" & vbCrLf)
response.write("<td align=center>" & ner & " " & upp & "</td></tr><tr>" & vbCrLf)
imgname = fs.getFileName(myFolder.files(l))
response.write("<td><img src=" & dir & "/" & imgname & " border=""0""></td>" & vbCrLf)
response.write("</tr></table><br><br>" & vbCrLf)
set fs = nothing
%>
------------------------------
Fullstorleksbilderna ligger alltså på URL:en https://www.markusp.se/new/gallery/mod och thumbsen på URL:en https://www.markusp.se/new/gallery/mod/thumbs. hela testgalleriet ligger på adressen https://www.markusp.se/new/gallery/portfolio_test.asp om nån vill kika.
Är inte alls superskillad på ASP, men det är ju när filnamnet ska hämtas från mappen som det knasar sig har jag räknat ut... Fick höra att getFilename måste ha full sökväg, dvs att man måste använda sig av server.mappath, men inkluderas inte det i path?
I koden
-----------------
myFolder = fs.getFolder(path)
-----------------
är
-----------------
path = server.mapPath(globalDir & dir & "")
-----------------
och globalDir hämtas från _global.asp, där
-----------------
globalDir = "/new/gallery/"
-----------------
och dir i detta fallet är
-----------------
mod
-----------------
Nån som har nån clue? Mkt tacksam för hjälp!
/Markus
Hej och välkommen till wF!
Omslut gärna kod med kodtaggar ([kod]kod här[/kod]) så blir den mer lättläst.
Vilken är rad 40?
Tackar!
Ska köra kod-taggen i fortsättningen... :-)
Rad 40 är
imgname = fs.getFileName(myFolder.files(l))
Är som sagt inte skolad från grunden i ASP, men jag kan ju se logiken i det mesta, förstår ju vad som SKA hända så att säga, varifrån saker o ting hämtas osv, men detta går jag bet på... :-(
Skrev nu
imgname = myFolder.files(l)
men fick samma felmeddelande,
Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument
/new/gallery/showPic.asp, line 40
dessutom visas bilden i ett nytt fönster och inte i iframen den ska visas i. den är ett annat problem, funkar inte riktigt heller, men det är detta jag skulle vilja lösa i första hand.
Vad får du med
response.write "Path = " & path & "<br>"
if myFolder is nothing then
response.write "Katalogen finns inte"
else
response.write "l = " & l & "<br>"
response.write myFolder.files.count
end if
?
svaret blev, när jag bytte ut rad 40 mot kodsnutten:
Path = D:\webroot\www.markusp.se\new\gallery\mod
l = 3
20
när jag tryckte på bild 3. och det är 20 bilder i mappen, så det stämmer ju...
Båda alternativen ger
Path = D:\webroot\www.markusp.se\new\gallery\mod
l = 3
Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument
/new/gallery/showPic.asp, line 47
när jag skrev
response.write "Path = " & path & "<br>"
if myFolder is nothing then
response.write "Katalogen finns inte"
else
response.write "l = " & l & "<br>"
response.write myFolder.files(l).name ELLER response.write myFolder.files(l).name
end if
Det verkar inte som att det går att indexera i files-samlingen på det viset. Däremot kan du iterera genom samlingen så här
for each file in myFolder.files
response.write file.name & "<br>"
next
Hmm, det är så skumt för detta sciptet har funkat på en annan sajt, har inte ändrat alls mycket i det...
Aja, hur som helst. Med ovanstående kod så visas ju filnamnen i mappen, men det jag behöver är ju att filnamnet hämtas för den aktuella bilden. Det ska ju kollas av vilket "nr" bilden har, och utifrån det hämta motsvarande filnamn till koden så att rätt bild visas.
Till framåt- och bakåtpilen behövs ju också ett värde på l, om man ska kunna växla bilder framåt och bakåt...
Knepigt detta... :-/
Ovanstående kod var endast ett exempel. Min tanke var att du skulle utgå i från den för att lösa problemet :)
En vidareutveckling
dim counter
counter = 0
for each file in myFolder.files
if counter = l then
imgname = file.name
exit for
next
next
...
'använd imgname
...
Kan det hjälpa?