Got ein bizarres Problem in einer IF
Erklärung mit mehreren Bedingungen. Die letzte funktionierende Version sieht so aus:VB6 mehrere IF-Anweisung bizarre Ausgabe
If VAR1 = "SCRT" And InStr("|TEC|FIN|", "|" & VAR2 & "|")) And VAR3 = 1 Then
Und jetzt habe ich eine weitere Bedingung zur Erklärung implementieren:
If VAR1 = "SCRT" And InStr("|TEC|FIN|", "|" & VAR2 & "|")) And (VAR3 = 1 or VAR3 = 15) Then
Mit diesen Werten: VAR1: "" (leer) VAR2: "FIN" VAR3: 1
Der Code wird es in Debug gut funktionieren. Das Bizarre kompiliert und läuft auf der Produktionsumgebung, der Zustand ging selbst bei der ersten Bedingung nicht in Ordnung.
Die Werte wurden bereits protokolliert. Die Produktionsumgebung enthält die gleichen Dateien (Bibliotheken).
Die einzige Sache, die sich neben der Bedingung geändert hat, ist die Option Explicit zu Beginn dieses Moduls.
Danke !!
'On Error Resume Next' und' VAR1' ist null? – wqw
Instr gibt die Position der Übereinstimmung zurück (entweder 1 oder 5 oder 0.) Der And-Operator ist in VB6 bitweise. Ein TRUE-Wert ist -1, also alle Bits Sie sollten nach dem Ergebnis von Instr suchen, das> 0 ist. Das wird entweder 0 oder -1 zurückgeben und Ihr Ausdruck wird korrekter sein. –
Ich habe das gesehen, aber in diesem Fall konvertiert vb6 implizit jeden Wert> 0 in True. –