Anzeige der #NULL$ konstante

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Anzeige der #NULL$ konstante

Beitrag 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.
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Anzeige der #NULL$ konstante

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Anzeige der #NULL$ konstante

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Re: Anzeige der #NULL$ konstante

Beitrag 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:
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Anzeige der #NULL$ konstante

Beitrag von ts-soft »

Du kannst #Null$ einfach durch #Empty$ ersetzen und in älteren Codes nutze dann:
#Empty$ = ""

#Null$ entspricht jetzt eher einem #Nil :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
xXRobo_CubeXx
Beiträge: 120
Registriert: 12.06.2015 16:08
Computerausstattung: Version 5.41 LTS
Wohnort: Wohnort
Kontaktdaten:

Re: Anzeige der #NULL$ konstante

Beitrag 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? :)
Version 5.41 LTS :)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Anzeige der #NULL$ konstante

Beitrag 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?
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: Anzeige der #NULL$ konstante

Beitrag 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
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Anzeige der #NULL$ konstante

Beitrag 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 
Benutzeravatar
mhs
Beiträge: 224
Registriert: 11.01.2009 16:30
Wohnort: Graben
Kontaktdaten:

Re: Anzeige der #NULL$ konstante

Beitrag von mhs »

Sieht ganz nach einem Bug aus :?
Michael Hack

Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Antworten