webForumDet fria alternativet

Olika ASP på server och lokalt

ASP

5 svar · 606 visningar · startad av bennytall

Medlem sedan okt. 200254 inlägg
Frågan#1

Hej!

Jag har problem med att ASP-koden jag kör lokalt på min iis inte funkar på webbhotellet. De har samma version av scriptmotorn (iallafall enligt asp-koden Scriptenginemajorversion och Scriptengineminorversion).
Och det är inte mycket som strular, men vissa saker.
T ex denna funktion:
Function getBeginStr (psStr, pnLen )
if Len(psStr)>pnLen then
getBeginStr = Mid(psStr,1,pnLen) & "..."
else
getBeginStr = psStr
end if
End Function

OBS - detta är bara ETT exempel.

Vad är problemet?
Ska jag behöva anpassa koden för servern?

Någon som råkat ut för samma sak eller vet vad man kan göra?

Tack på förhand! :)

Benny

Medlem sedan mars 20023 561 inlägg
#2

Felmeddelande?

Medlem sedan okt. 200254 inlägg
#3

Tyvärr inga felmeddelanden...

Tyvärr.. inget felmeddelande... den bara "skiter" i att göra vad jag vill.... och sedan rusar vidare... MYCKET skumt.

Medlem sedan okt. 200254 inlägg
#4

Nu! Men fortfaraande skumt...

Denna funktionen funkar:
Function getBeginStr (psStr, pnLen )
Dim sStr
sStr = psStr
if Len(sStr) > pnLen then
getBeginStr = Mid(sStr,1,pnLen) & "..."
else
getBeginStr = sStr
end if
End Function

När jag först tilldelar en variabel värdet och sedan jobbar med det funkar det bättre. Det som jag anropar funktionen med är ett recordset-fält/kolumn.
Borde jag inte kunna jobba med den som med en sträng?
Jag tilldelar ju inte den något värde, utan använder det ju endast som in-parameter till funktionen/funktionerna.

Någon som vet?

Benny

Medlem sedan juni 2002256 inlägg
#5

Testa att ange hur variablerna ska hanteras; som värdetyper eller referenser.
En ganska ogrundad teori är att psStr och pnLen tolkas som referenser iom du justerar dem direkt i funktionen. Iom detta kanske ASP tolkar hela metoden som en procedur i stället för funktion och därför inte returnerar något värde (utan endast ändrar värdena på psStr och pnLen).

Ändra funktionen till något i stil med:

Function getBeginStr ([B]ByVal [/B] psStr, [B]ByVal [/B] pnLen )
f Len(psStr) > pnLen then
getBeginStr = Mid(psStr,1,pnLen) & "..."
else
getBeginStr = psStr
end if
End Function

Detta är som sagt en väldigt diffus teori och ni är varmt välkomna att såga den ;-)

Medlem sedan okt. 200254 inlägg
#6

Tack för hjälpen...

Ja jag testade detta, men det funkade tyvärr inte.
Men jag får vara ganska nöjd med lösningen jag har tror jag.
Men det är skumt att det funkar bra lokalt men inte på servern.
Samma scriptmotor-version å så. Hm...

Tack för hjälpen iallafall. :)

Denkan skrev:

Testa att ange hur variablerna ska hanteras; som värdetyper eller referenser.
En ganska ogrundad teori är att psStr och pnLen tolkas som referenser iom du justerar dem direkt i funktionen. Iom detta kanske ASP tolkar hela metoden som en procedur i stället för funktion och därför inte returnerar något värde (utan endast ändrar värdena på psStr och pnLen).

Ändra funktionen till något i stil med:

Function getBeginStr ([B]ByVal [/B] psStr, [B]ByVal [/B] pnLen )
f Len(psStr) > pnLen then
getBeginStr = Mid(psStr,1,pnLen) & "..."
else
getBeginStr = psStr
end if
End Function

Detta är som sagt en väldigt diffus teori och ni är varmt välkomna att såga den ;-)

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)