PowerBuilder NULL und Leere variable
Ich bin mit PowerBuilder und habe ein problem mit der if-Bedingung. Ich möchte überprüfen, ob eine variable nicht null ist, oder es ist nicht leer.
Also erstmal ich habe folgende if-Bedingung zu testen, ob die variable null ist oder nicht:
IF IsNull(ls_name) THEN
messagebox("ls_name", "is null") //true
else
messagebox("ls_name", "is not null")
end if
Aus der obigen Bedingung, ich weiß, dass ls_name null ist. Nun ich testen, ob seine leer oder nicht:
if ls_name = "" then
messagebox ("ls_name", "is empty")
else
messagebox("ls_name", "is not empty") //true
end if
Und ich bekomme, dass ls_name ist nicht leer.
Nun, wenn ich eine if-Bedingung überprüfen Sie, ob ls_name ist NICHT Null, oder Sie ist NICHT leer, ich habe die folgende if-Bedingung:
IF not IsNull(ls_name) or ls_name <> "" THEN
messagebox("test", "condition true")
else
messagebox("test", "condition false") //this becomes true.
end if
Geht es um den else-Teil der Bedingung. Sollte das nicht der if-Teil wahr geworden? Schreibe ich die if-Bedingung falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denken von "null" als "unbekannt" hat immer zu mir bekommen, indem Sie verstehen, wie Ausdrücke ausgewertet werden.
So, wenn ls_name null ist,
ausgewertet
oder
Gut, für ein ODER "TRUE" ausgewertet, die mindestens eine Bedingung muss WAHR sein. Das gilt nicht in diesem Fall.
Den Weg, den ich in der Regel test für diese ist:
welche, wenn ls_name null ist, wird zu
dann
und
In anderen Worten, die variable "leer" ist.
Glück,
Terry
Hüten PB Weise für die Prüfung
if
Bedingungen und null-Verhalten:if
So, in Ihrem Fall ist es wahrscheinlich, dass, wenn ls_name null ist die
not IsNull(ls_name)
ist der Auswertung zu wahren, aberls_name <> ""
ist immer null, alsotrue or null
ist immer null und Sie immer in dieelse
Teil.Ich würde check in 2 mal :
Wenn Sie brauchen, um mit den gleichen code für die nicht leer sind /nicht null ist, dann würden Sie haben, um eine Art von boolean-flag. Ich habe auch angefangen zu verwenden, die
goto
- Anweisung ist praktisch, wenn der Umgang mit verschachteltenif
- Anweisung.(BTW : NEIN,
goto
- wenn gezielt eingesetzt - ist nicht böse ;o)goto
Verwendung, aber nur zu sagen, wir haben mehrere ausgearbeitete Anwendungen hier, die sind derzeit in 11,5 classic und würde wahrscheinlich ein upgrade auf 12.5 Klassiker aber nie .NET aufgrund unserer custom PBNI Erweiterungen. Das wäre eine Bemerkenswerte Anstrengung, um neu zu schreiben und diesen Aufwand werden wohl nie geplant durch die Firma brains... ich war nicht bewusst, dass .NET nicht bietet springen, aber wir tun es mit bedacht in C oder PB im wesentlichen für die Reinigung Zweck, Fehler in der Handhabung und es ist tatsächlich hilfreich. Java fehlt es auch (auch wenn ein goto-Befehl existiert sowieso)...Beste Technik, die ich für meine Programme sind
ich immer null-Zeichenfolgen auf Leerstellen prüfen Sie dann, ob die strings leer sind.. es hängt auch davon ab, welches Szenario Sie ausgeführt werden