webForumDet fria alternativet

OR sats på en rad...??

ASP

11 svar · 356 visningar · startad av Eclipse

Medlem sedan juli 20003 825 inlägg
Frågan#1

Kan jag inte skriva en OR sats på en rad!?

	' ## GET DATABASE PATH
'	IF Left(myRow(2,j),1) \<\> "#" OR myRow(2,j) \<\> "--" THEN myPath2 = split(myRow(2,j), "/")(uBound( split(myRow(2,j), "/") )-1)
	IF Left(myRow(2,j),1) \<\> "#" THEN myPath2 = split(myRow(2,j), "/")(uBound( split(myRow(2,j), "/") )-1)
Medlem sedan dec. 20003 887 inlägg
#2

Det ska väl inte vara några problem.

Felmeddelande?

Medlem sedan juli 20003 825 inlägg
#3

"Subscript out of range: " vilket betyder att koden körs fast den inte ska köras.

Jag bara undrar om man kan skriva allt på en rad eller om det inte ska fungera.

Medlem sedan dec. 20003 887 inlägg
#4

Subscript out of range: det betyder att du försöker titta på en plats i din Array som inte finns. Inget annat.

Medlem sedan juli 20003 825 inlägg
#5

Jo, det förstår jag! Men om du kollar koden ovanför så ska den inte köras om antingen 1 första tecknet är "#" eller 2. innehåller "--".

Det är det som är själva problemet och anledningen till min fråga!

Koden körs fast den inte borde köras!

Medlem sedan dec. 20003 887 inlägg
#6

Men du kör den ju alltid...

IF Left([b]myRow(2,j)[/b],1) <> "#" THEN myPath2 = split(myRow(2,j), "/")(uBound( split(myRow(2,j), "/") )-1)

Vilket värde har j och hur är myRow dimensionerat?

Medlem sedan juli 20003 825 inlägg
#7

Frågan är: Kan jag köra en OR sats på en rad!

Resten fungerar, trust me. Jag orkar inte förklara!

Medlem sedan dec. 20003 887 inlägg
#8

Hehe... ok.

Det ska inte vara några problem att göra det (om nu inte VBScript har någon skum spärr), men du kan ju testa omsluta hela uttrycket med paranteser.

Medlem sedan juli 20003 825 inlägg
#9

Tack!

Äh, det fungerar fortfarande inte... jag får ta en dush så kommer nog lösningen!

Medlem sedan juni 200032 967 inlägg
#10

Det är inga problem att använda OR på det sättet, under förutsättning att koden i sig inte skapar ett fel.

Det är nämligen så, att VB och alla dess släkten (vba, vbscript etc) evaluerar hela if-statementet trots att första villkoret redan gått åt pipan. Det är alltså ett "fel" (beroende på hur man ser det förstås) i språket, och man har inte mycket till val än att, i det här fallet, skriva koden på flera rader.

I .NET har man operatorerna AndAlso och OrElse, som vid användning slutar evaluera resten av uttrycket på det sätt man (i alla fall jag) skulle vilja att det fungerade i VB.

Så: sålänge inte några villkor i IF-satsen kan skapa ett fel så kan du ha hela klabbet på en rad. Annars måste du skriva på flera rader.

Mvh

Medlem sedan apr. 2004778 inlägg
#11

Som det redan är sagt innan så betyder felmeddelandet att din array har gått förbi ubound och du försöker kolla om ett värde är lika med något ändå. Du kan inte köra en array i en IF sats om ubound har passerats.
Hur ser din kod ut runt ovanstående kod? Hur håller du koll på att du inte passerar ubound?

Jo, det förstår jag! Men om du kollar koden ovanför så ska den inte köras om antingen 1 första tecknet är "#" eller 2. innehåller "--".

Om du har passerat ubound på arrayen så får du ett fel här.

Medlem sedan juli 20003 825 inlägg
#12
IF Left(myRow(2,j),1) <> "#" THEN
	IF myRow(2,j) <> "--" THEN
		 myPath2 = split(myRow(2,j), "/")(uBound( split(myRow(2,j), "/") )-1)
	END IF
END IF

Tack @nders! Rätt sunkigt, men det fungerar!

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