vb.net: Probleme mit If-Bedingung und String

Gast #7159780
Lesenswert?

Hallo, habe hier folgendes Beispiel aufgebaut:
1
 Public rechenvalues As Byte() = {&HA, &HB, &HC, &HD, &HE, &HF, &H8, &H9}


'Code in einem Button
1
Dim str1 As String = "ZG"
2
        Dim str2 As String = "DD"
3
        Dim str3 As String
4
        Dim str4 As String = "D"
5
        Dim bt1 As Byte
6

7

8
        Dim MyByte500 As Byte
9
        If Byte.TryParse(str4, System.Globalization.NumberStyles.AllowHexSpecifier, Nothing, MyByte500) Then
10
            bt1 = MyByte500
11
        Else
12
            MsgBox("FAILURE")
13

14
        End If
15

16
        If str1 = "ZG" Or str1 = "ZH" Or str1 = "ZI" Or str1 = "ZK" = False And str2 = "DD" Then str3 = (Add(bt1, 26).ToString("X"))
17
        If str1 = "ZG" Or str1 = "ZH" Or str1 = "ZI" Or str1 = "ZK" = True And str2 = "DD" Then str3 = str4

Was der Code machen soll: Bedingungen verschiedener Strings prüfen und 
dann entweder mit einer eigenen Rechenregel (siehe weiter unten) 
addieren, oder je nach Bedingung einfach str3 = str4

1
Private Function Add(ByVal startingValue As Byte, ByVal steps As Integer) As Byte
2
        Dim startingIndex = Array.IndexOf(rechenvalues, startingValue)
3
        Dim finalIndex = (startingIndex + steps) Mod rechenvalues.Length
4
        Dim finalValue = rechenvalues(finalIndex)
5

6
        Return finalValue
7
    End Function

Nun habe ich hier testweise
1
str1 = ZG und str2 = DD
 sowie
1
str4 = D
 wie oben festgelegt

Hier:
1
If str1 = "ZG" Or str1 = "ZH" Or str1 = "ZI" Or str1 = "ZK" = False And str2 = "DD" Then str3 = (Add(bt1, 26).ToString("X"))
2
        If str1 = "ZG" Or str1 = "ZH" Or str1 = "ZI" Or str1 = "ZK" = True And str2 = "DD" Then str3 = str4

Müsste nun also str 3 = str4 ausgeführt werden, wodurch str3 dann 
ebenfalls ein "D" ist.

Das funktioniert auch, ABER wenn nach dem DD noch folgender Satz kommt:
1
If str1 = "ZG" Or str1 = "ZH" Or str1 = "ZI" Or str1 = "ZK" = False And str2 = "A1" Then str3 = (Add(bt1, 20).ToString("X"))

wird mein str3 (eigentlich D) plötzlich zu einer 9. Wenn man nun den 
letzten If-Satz anschaut:
1
If... and str2 = "A1" then str3 = (Add(bt1, 20)

Würde man str3 (D) + 20 (mit meinen vorgegebenen Regeln) machen, kommt 
auch 9 raus.

Aber wieso zum Himmel passiert das, obwohl
1
and str2 = "A1"
 überhaupt nicht gegeben ist? str2 ist oben fest der Wert "DD" 
zugwiesen, wieso wird also die "Rechnung" für "str = A1" durchgeführt?

Kann jemand mal schauen was ich falsch mache?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren