Jag har en väldigt flummig kod: Tror inte om du kan få det att fungera på det viset. En siffra kan inte ge True eller False. Skriv så här så ska du se att det fungerar: Detta funkade inte; Jo, den ska fungera. Testade just själv i VB6, och det fungerar här i alla fall. Vad är det som inte fungerar då? Detta: Jo, vilken kod du menade förstod jag ju, men vad är det som inte fungerar? Jag testade igen och det fungerar perfekt. Inget felmeddelande men beep körs. I ifsatsen står det ju inte "if Det var märkligt ... Här körs den inte. Hur kör du koden då? Stega igenom så kanske det dyker upp nåt annat som ger ditt beep eller ändrar värdet på I. Jag har givetvis stegat det, och allting stämmer. Ok. Ja, som sagt var så ska det fungera, och det gör det här. angående först syntaxen så autokonverterar vb alla värde som inte är 0 till true om ett booleanskt värde krävs ... därför det gick igenom .. Ska försöka förtydliga! Det hela handlar om operatorernas prioritet i kombination Många fina svar på varför den första koden inte fungerade, men jag är ännu lite nyfiken på varför den andra som ju är logiskt riktig inte fungerade hos Frans. Visst har det det, jag har en select case sats. Jag har bara suttit och iaktagit dessa intressanta och lärorika inlägg :)Vb ljuger..
I = 8
If I = 1 Or 2 Or 3 Or 4 Or 6 Then
beep '//Denna kod körs!!
End If
Varför körs koden?! Påståendet är ju inte uppfyllt!
mvh FransVB ljuger inte
I = 8
If I = 1 Or I = 2 Or I = 3 Or I = 4 Or I = 6 Then
Beep '//Denna kod körs!!
End If
Alternativt kan du göra en Select Case enligt:
Select Case I
Case 1 To 4, 6
Beep
Case Else:
' Gör nåt annat?
End Select
Lycka till. :-)
/EESv: VB ljuger inte
If I = 1 Or I = 2 Or I = 3 Or I = 4 Or I = 6 Then
men case satsen funkade. Undrar varför, ifsatsen är ju rätt "syntax mässigt". Någon kanske har en förklaring på varför den inte funkar?
Tack för hjälpen,
mvh frans
Sv: VB ljuger inte
Sv: VB ljuger inte
I = 8
If I = 1 Or I = 2 Or I = 3 Or I = 4 Or I = 6 Then
Beep '//Denna kod körs!!
End If
mvh FransSv: VB ljuger inte
Får du nåt felmeddelande?Sv: VB ljuger inte
I =8".
mvh FransSv: VB ljuger inte
Sv: VB ljuger inte
Jag är inte i Windows just nu, jag återkommer senare.
mvh FransSv: VB ljuger inte
Själv föredrar jag Select Case om man har så många olika alternativ att välja mellan, men vad som är bäst vet jag inte.
Hoppas det löser sig för dig. :-)
/EESv: VB ljuger inte
Sv: VB ljuger inte
>>Jag har en väldigt flummig kod:
>>I = 8
>>If I = 1 Or 2 Or 3 Or 4 Or 6 Then
>> beep '//Denna kod körs!!
>>End If
>>Varför körs koden?! Påståendet är ju inte uppfyllt!
Jo påståendet är uppfyllt för or 2 även or 3 och or 4 och or 6
Hur kan det vara det?
Det som händer är att värdet 2 testas om det är true inte om I = 2 osv
Altså det som står i ett or statement är helt frikopplat från dina tidigare statement och utgör ett fullständigt och sjävständigt påstående.
Har för mig att allt som är skilt från 0 converteras till true även typ 0,1
Leif P Sv: Vb ljuger..
med det som Patrik Löwendal skriver att VB autokonverterar.
> If I=1 Or 2 Or 3 Or 4 Or 5 Then
tolkas av interpretatorn som
> If I=1 Or (2 Or 3 Or 4 Or 6) Then
Detta på grund av att Or operatorn har högre prioritet än operatorn "är lika med".
Uttrycket i sig är alltid SANT då det är skiljt från NOLL.
Ser vi på de bitvisa operationerna som utförs i exemplet blir det egentliga resultatet enligt följande.
DEC 2 = BIN 0000 0010
DEC 3 = BIN 0000 0011
DEC 4 = BIN 0000 0100
DEC 6 = BIN 0000 0110
=================
DEC 7 = BIN 0000 0111
VB-interpretatorn tolkar din kod så här:
> If I=1 Or 7
sju (7) är inte lika med 0 och följdaktligen alltid SANN.
Det gäller att kunna sin datoraritmetik när man sysslar med OR/AND operatorer.
[peter.h]Sv: Vb ljuger..
Eller har det löst sig för dig, Frans?
/EE *nyfiken*Sv: Vb ljuger..
Tack för alla inläggen.
mvh Frans