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
sowie
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
ü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?