webForumDet fria alternativet

Boolean

15 svar · 475 visningar · startad av firstchoice

firstchoiceMedlem sedan okt. 2001605 inlägg
#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å?

VideMedlem sedan dec. 19996 094 inlägg
#2

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

firstchoiceMedlem sedan okt. 2001605 inlägg
#3

hur menar du?

VideMedlem sedan dec. 19996 094 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. :)

PalleMedlem sedan apr. 20002 716 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]
Denniz PoPMedlem sedan aug. 2002206 inlägg
#6

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

VideMedlem sedan dec. 19996 094 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().

LarsGMedlem sedan dec. 200012 465 inlägg
#8

Varför behövs det en funktion?

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

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

Denniz PoPMedlem sedan aug. 2002206 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.

VideMedlem sedan dec. 19996 094 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. ;)

OveRRidEMedlem sedan feb. 20018 509 inlägg
#12

LarsG skrev:

Varför behövs det en funktion?

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

Uh, va?

Engine^Medlem sedan dec. 20002 861 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
VideMedlem sedan dec. 19996 094 inlägg
#14

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

OveRRidEMedlem sedan feb. 20018 509 inlägg
#15

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

PalleMedlem sedan apr. 20002 716 inlägg
#16

OveRRidE skrev:

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

Instämmer.. :h

Genererad på 382 ms · cache AV · v20260730165559-full.f96bc7eb