webForumDet fria alternativet

Boolean

ASP

15 svar · 475 visningar · startad av firstchoice

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

hur funkar Boolean ?

måste man göra så här? blir lite mycket kod om man skall kolla flera variablar

	If Request.Form("sRead") = "true" Then
		bRead = true
	ElseIf Request.Form("sRead") = "" Then
		bRead = false
	End If
	
	Response.Write bRead

har ett formulär med massa "checkboxar"
kryssar man i skickas "true" iväg
är det true skall Boolean variablen få värdet true, annars false

finns det något bättre sätt att göra det på?

Medlem sedan dec. 19998 577 inlägg
#2

Gör en funktion av det där du skickar in värdet som argumet, sedan återger du true/false. :)

Medlem sedan okt. 2001615 inlägg
#3

hur menar du?

Medlem sedan dec. 19998 577 inlägg
#4
function IsChecked(strValue)
	If strValue = "true" Then
		IsChecked= true
	Else
		IsChecked= false
	End If
end function

Sedan anropar såhär:

response.write "Är den iklickad: " & IsChecked( Request.Form("sRead") )

Så kan du lätt kolla alla checkboxar genom samma funktion. :)

Medlem sedan apr. 20003 174 inlägg
#5

..typ så här tror jag Vide menar: :)

[RED]<%

Function isTrue(bStr)

	If trim(bStr) = "true" Then isTrue = True Else isTrue = False

End Function

Response.Write isTrue(Request.Form("sRead"))

%>[/RED]
Medlem sedan aug. 2002207 inlägg
#6

Annars är det väll bara att använda den inbyggsa funktionen CBool() ?

Medlem sedan dec. 19998 577 inlägg
#7

CBool() tar nummer argument, 0 = false och allt över är true, så med tanke på att det är text som skickas in kommer det inte att fungera. :)

Men du kan väl sätta vilket värde som skall skickas ifrån checkboxarna, så kan du få den att ge ifrån sig 0 respektive 1 så kan du använda CBool().

Medlem sedan dec. 200012 464 inlägg
#8

Varför behövs det en funktion?

bread = Request.Form("sRead") = "true"
Medlem sedan okt. 2001615 inlägg
#9

LarsG's idé funkade perfa!! som vanligt :)

Medlem sedan aug. 2002207 inlägg
#10

Vide skrev:

CBool() tar nummer argument, 0 = false och allt över är true, så med tanke på att det är text som skickas in kommer det inte att fungera. :)

Men du kan väl sätta vilket värde som skall skickas ifrån checkboxarna, så kan du få den att ge ifrån sig 0 respektive 1 så kan du använda CBool().

Är du säker på det? Jag brukar iaf använda CBool vid text. Testa att skapa temp.asp och köra denna kod:

<a href="temp.asp?action=true">action</a><br>
<a href="temp.asp?action=false">action2</a><p>

<% If CBool(request.Querystring("action")) = True Then 
	Response.write("True") 
Else
	Response.Write("False")
End If %>

Hmm... Jag kollade lite snabbt på msdn och det verkar stämma som du säger. Dock så fungerar denna kod utmärkt för mig och har alltid gjort det.

Medlem sedan dec. 19998 577 inlägg
#11

Det fungerar säkert, på gott och ont. ;)

Men jag tycker att det är fel sätt angripa problemet genom kryphål i språket, jag litar inte direkt på språket när det inte gör som det står i dokumentationen.

Att det fungerar kan vara för att true motsvarar 1, och false motsvarar 0 som datatyp, men som textsträng bryter det mot dokumentationen (och logiska regler språket borde ha).

Men nu halkar jag ifrån ämnet, detta är mål för en annan diskussion. ;)

Medlem sedan feb. 200112 078 inlägg
#12

LarsG skrev:

Varför behövs det en funktion?

bread = Request.Form("sRead") = "true"

Uh, va?

Medlem sedan dec. 20003 887 inlägg
#13

Inline if-sats...

bread = (Request.Form("sRead") = "true")

är samma som

If Request.Form("sread") = true Then
    bread = true
Else
   bread = false
End If
Medlem sedan dec. 19998 577 inlägg
#14

Alla if-satser tar uttryck som återger true/false som resultat, och "värde = värde" återger ju true/false. :)

Medlem sedan feb. 200112 078 inlägg
#15

Det hade jag faktiskt inte en aning om att man kunde skriva så. :)

Medlem sedan apr. 20003 174 inlägg
#16

OveRRidE skrev:

Det hade jag faktiskt inte en aning om att man kunde skriva så. :)

Instämmer.. :h

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