Seite 1 von 1

Anzeige der #NULL$ konstante

Verfasst: 26.01.2016 09:34
von Pelagio
Hallo PB.ler,

bei mir hat sich gerade eben ein Problem ergeben welches ich nicht ganz verstehe.
Volgender Code

Code: Alles auswählen

Define.s pValue 
pValue = "1 " + #LF$ + #Null$ + #LF$ + " 2"
Debug pValue
pValue ="Hallo"
Debug pValue
ergibt
1
!_PB_NullConstant_!
2
:bounce:
Für #NULL$ wird '!_PB_NullConstant_!' übergeben und im nachhinein kann pValue nicht mehr geändert werden. :praise:
Im Augenblick arbeite ich auf einem XP Rechner.

Re: Anzeige der #NULL$ konstante

Verfasst: 26.01.2016 10:56
von STARGÅTE
Soweit ich weis, die #Null$-Konstante ausschließlich dafür da, eine Stringvariable vollständig zu löschen, dass heißt sowohl den String selbst, als auch den Pointer auf Null zu setzen.
Die #Null$-Konstante ist selbst kein String, und kann nicht mit Strings verknüpft werden.

Re: Anzeige der #NULL$ konstante

Verfasst: 26.01.2016 11:06
von ts-soft
Dein Code ergibt ja nicht gerade viel sinn :mrgreen:
Statt #Null$ ist #Empty$ zu nutzen:

Code: Alles auswählen

Define.s Value1 = #Null$
Debug @Value1

Define.s Value2 = #Empty$
Debug @Value2
Value2 wird initialisiert, Value1 nicht (nur für den Compiler Existend, da kein Wert).

Gruß
Thomas

Re: Anzeige der #NULL$ konstante

Verfasst: 26.01.2016 11:51
von Pelagio
Danke STARGÅTE & ts_soft

für die schnelle Antwort.
In der Vergangenheit habe ich immer die #NULL$ benutzt um Variablen zu leeren, insbesondere auch dann wenn ich zBsp. ein ListIconGadget füllen wollte und an einer bestimmten Zelle keinen Wert hatte. Sowie auch bei der Übergabe im SQL-String für eine Datenbank habe ich die #NULL$ gerne benutzt. Und bis dato funktionierte es auch immer hervorragend. Das Problem welches ich aufzeigte ist erst jetzt mit Version PB 5.41 aufgetreten. Ich werde Wohl oder Übel meine Logik bei der Einsetzung von #NULL$ überdenken müssen und statt #NULL$ einfach "" oder '' benutzen. Das wird sicherlich wiederum Probleme mit älteren Source, die man event. überarbeitet, nach sich ziehen.
Danke :allright:

Re: Anzeige der #NULL$ konstante

Verfasst: 26.01.2016 12:08
von ts-soft
Du kannst #Null$ einfach durch #Empty$ ersetzen und in älteren Codes nutze dann:
#Empty$ = ""

#Null$ entspricht jetzt eher einem #Nil :wink:

Re: Anzeige der #NULL$ konstante

Verfasst: 26.01.2016 12:14
von xXRobo_CubeXx
Ernstgemeinte Frage: Warum sollte man #Empty$ schreiben? "" ist doch viel kürzer. Warum unnötig so langes Wort schreiben statt zwei Zeichen? Welchen Vorteil hat man? :)

Re: Anzeige der #NULL$ konstante

Verfasst: 26.01.2016 12:45
von NicTheQuick
xXRobo_CubeXx hat geschrieben:Welchen Vorteil hat man? :)
Keinen.

Aber lustig, dass du extra "Ernstgemeinte Frage" davor schreibst. Sind deine Fragen sonst nicht ernst?

Re: Anzeige der #NULL$ konstante

Verfasst: 26.01.2016 13:11
von Josh
Trotzdem ein wenig komisches Verhalten.

Diesen Code ausführen:

Code: Alles auswählen

Define.s Value1 = #Null$
Debug @Value1

Define.s Value2 = #Empty$
Debug @Value2
Dann oben zwei weitere Zeilen eingefügt und 2x ausführen:

Code: Alles auswählen

Define.s Value1 = "Test"
Debug @Value1

Define.s Value1 = #Null$
Debug @Value1

Define.s Value2 = #Empty$
Debug @Value2
Ergibt beim ersten F5:

Code: Alles auswählen

0
0
3743400
Und beim zweiten F5:

Code: Alles auswählen

3743400
0
3743432

Re: Anzeige der #NULL$ konstante

Verfasst: 26.01.2016 13:44
von NicTheQuick
Das ist in der Tat komisch. :?
Und 'Value1' ist dann tatsächlich ein leerer String.

Code: Alles auswählen

Define.s Value1 = "Test"
Debug @Value1
Debug Value1

Define.s Value1 = #Null$
Debug @Value1

Define.s Value2 = #Empty$
Debug @Value2 

Re: Anzeige der #NULL$ konstante

Verfasst: 26.01.2016 14:24
von mhs
Sieht ganz nach einem Bug aus :?