Domino 9 und frühere Versionen > Entwicklung
doc.Responses kann nothing retunieren?
animate:
--- Zitat von: koehlerbv am 16.02.05 - 20:57:47 ---Und weiterhin ja: Du kannst mit AND wie in Java zusammenfassen. Sowie eine Bedingung in der Abarbeitungsreihenfolge nicht stimmt, wird abgebrochen.
--- Ende Zitat ---
bist du dir da echt sicher? ich kanns leider mangels Notes-Client nicht nachprüfen. Ich habe aber noch im Kopf dass dies hier
Dim doc As NotesDocument
...
If Not doc Is Nothing And doc.GetItemValue("Wert")(0) = "0" Then
...
End If
einen Object Variable Not Set - Fehler erzeugt, wenn doc eben Nothing ist (statt dem GetItemValue kann eine beliebige Methode/beliebiges Attribut eingesetzt werden). Das würde bedeuten, dass alle Bedingungen ausgewertet werden.
Ich weiß es aber echt nicht mehr genau, obs in LS so ist. In VB ist es 100% so.
koehlerbv:
Ich rudere gerade heftigst in die Gegenrichtung - das mit dem Abbruch der Auswertung bei AND-Verknüpfungen nach der ersten Nichterfüllung einer Bedingung stimmt NICHT !
Mea culpa.
Bernhard
PS: Man sollte nicht "nebenbei" schreiben. Nochmals "Sorry @All !"
Glombi:
Ich habe folgenden Code:
Dim doc As NotesDocument
If False Or doc.Form(0) = "Egal" Then
Msgbox "Or geht"
End If
Ergebnis: Object variable not set
Erge: Notes wertet - auch bei OR - mal zunächst alle Conditions aus und prüft dann erst auf True oder False.
Andreas
Marinero Atlántico:
Andreas:
Bei OR muss das auch so sein. Bei EXKLUSIV ODER (genau eine der beiden Bedingungen muss true, die andere false sein) auch.
Nur bei AND ist diese short circuit evaluation logisch möglich.
(a==4) && (b==3)
Wenn a den Wert 5 enthält braucht der andere Operand nicht mehr geprüft werden. Der gesamte Boolsche Ausdruck ergibt immer FALSE (weil eben AND).
Bei Oder ist das schon wie gesagt von der grundlegenden Logik anders.
Wenn a den Wert 5 hat kann b trotzdem den Wert 3 haben und der gesamte boolsche Ausdruck ist insgesamt TRUE.
In Java, C## und sicher einer Menge anderer Programmiersprachen gibt es deshalb oft 2 solcher Operatoren. Einer mit short circuit evaluation. Der andere ohne. Wobei && gebräuchlicher, weil auch minimal performanter ist.
Liegt irgendwie auf der Hand.
Glombi:
Sorry, es ist auch:
Dim doc As NotesDocument
If False and doc.Form(0) = "Egal" Then
Msgbox "And geht"
End If
Ergebnis: Object variable not set
Andreas
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln