webForumDet fria alternativet

Stäng vill inte ta bort "/" för då funkar det inte.

ASP

7 svar · 200 visningar · startad av Brimba

Medlem sedan dec. 19995 874 inlägg
Frågan#1

Hej!

Någon som kan lösa detta åt mig?

Låt säga att vi har detta:

<%
Function string(str)
pos1 = InstrRev(str,"/")
string = Mid(str, 1, pos1-1)
End Function
%>

<script>
function go(v) {
document.frm.DBro.value=v;
document.frm.submit();
}
</script>

<a href="javascript:go('<%=String(Request.Form("DBro"))%>')">Tillbaka</A>

Där Request.Form("DBro") innehåller "Antivirus/F-Secure"

Då bör den länken rimligtvis ta bort F-Secure samt /:en. och String skall alltså innehålla "Antivirus"

Nu är det så att man får ett felmeddelande när jag försöker detta.

<%
Function string(str)
pos1 = InstrRev(str,"/")
string = Mid(str, 1, pos1)
End Function
%>

Fungerar perfekt.

Jag har även prövat

<%
Function string(str)
pos1 = InstrRev(str,"/")
pos2 = Len(pos1)
String = Left(pos1, pos2-1)
End Function
%>

Vilket ger samma felmeddelande i princip.

Någon som har några idéer?

Tack!

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

Medlem sedan dec. 19996 721 inlägg
#2

Det finns redan en funktion i VBScript som heter string(), su du bör byta namn.

function BackString(instring)
   mpos = InStrRev(instring, "/")
   BackString=Left(instring, mpos)
end function

------------------
----------------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
Norrköping
ASP/VB/Perl/PHP/Tango

Medlem sedan dec. 19995 874 inlägg
#3

Hej!

Det fungerar inte fortfarande.

Jag har även provat detta

function BackString(instring)
If Right(instring,1) = "/" Then
mpos = InStrRev(instring, "/")
BackString = Left(instring, mpos-1)
Else
BackString = "Tjohoo"
End If
end function

Det lustiga är då att BackString alltid får värdet "Tjohoo".
Jag tycker att den borde ha / som sista tecken någongång, eftersom när jag skriver ut värdet av den så har den värdet "Antivirus/" och alltså borde
Right(instring,1) vara = "/", men detta är knepigt.

Några tips?

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

Medlem sedan dec. 19996 721 inlägg
#4

Funktionen som jag gav dig fungerar i alla fall för mig.

bapp="Antivirus/F-Secure"
response.write BackString(bapp)

skriver ut "Antivirus"

om bapp är "Antivirus/F-Secure/" så strippas ju bara snedstrecket, så det kanske är det du råkat ut för.

function BackString(instring)
   mpos = InStrRev(instring, "/",-2)
   BackString = Left(instring, mpos)
end function

Löser antagligen det problemet.

[Redigerat av emission den 13 jun 2000]

Medlem sedan dec. 19995 874 inlägg
#5

Hmm..

Om man tänker efter lite...

Allt ligger i files.asp

När jag sedan använder mig av request.Form("DBro") så hämtar den värdet av formen, men frågan är om formen inte bör uppdateras eller att den gamla sparas i en temporär variabel.

Jag skall titta mer på detta imorgon när är lite mer klar i skallen känns det som.

Ha det bra!

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

Medlem sedan dec. 19995 874 inlägg
#6

Problemet består. :(

när jag kör med

mpos = InStrRev(instring, "/",-2)
BackString = Left(instring, mpos)

Fungerar det inte alls.

Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument: 'InStrRev'

/test/files.asp, line 19

line 19 är: mpos = InStrRev(instring, "/",-2)

Jag försökta ändra till -1 och då fungerade det, fast då var ju det naturligtvis / med. :(

Det lustiga är när jag kör

pos1 = InstrRev(instring,"/")
BackString = Mid(instring, 1, pos1-1)

Så får jag resultatet "Antivirus", men sen när jag klickar på den och skall ta fram den så får jag felmeddelandet, det måste betyda att den inte gillar antivirus eftersom den då inte innehåller någon /. Alltså kanske jag måste lägga till om den inte innehåller någon / utför inte funktionen...

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

Medlem sedan dec. 19996 721 inlägg
#7

Okej, då vet vi det. Negativa värden i InStrRev ger inte positionen från slutet (fastän -1 ger den sista). Dumt.

mpos = InStrRev(instring, "/",len(instring)-1)

borde ge samma resultat

Medlem sedan dec. 19995 874 inlägg
#8

Jupp, det var en god natts sömn som behövdes, var uppe alldeless för tidigt igår. Så hjärnan var helt låst.

Men så här blev min lösning:

<%
function BackString(instring)
	mpos2 = Instr(instring, "/")
		If mpos2 = 0 Then
		Else
			pos1 = InstrRev(instring,"/")
			BackString = Mid(instring, 1, pos1-1)
		End If
End Function
%>

Tack för alla som försökte hjälpa mig igår, det var troligtvis inte så lätt, när jag inte ens sa vad som egentligen var fel. Doh!

Ursäkta mig!

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)