Seite 1 von 1

#Null vs 0

Verfasst: 16.12.2014 15:04
von _JON_
Gibt es irgendein Grund #Null für "NULL" zu nutzen anstatt 0?

Wenn Ich mir den PB generierten ASM Code anschaue kommt das gleiche raus.
Gibt es kein NULL in PB?

Verfasst: 16.12.2014 15:13
von CodeCommander
~ DELETE ~

Re: #Null vs 0

Verfasst: 16.12.2014 15:54
von NicTheQuick
Was meinst du mit "Gibt es kein Null in PB?"?
Meinst du so ein "null" wie in Java? Dann ist die Antwort: Nein.

Wenn du in PB Objekte nutzt, musst du sie zuerst korrekt freigeben und dann kannst du die Variable, die das Objekt enthielt einfach gleich 0 setzen. In Java macht der GarbageCollector das ReferenceCounting und Freigeben des Objektes für dich. Und #Null ist wie schon gesagt genau das selbe. Also es gibt keinen Grund entweder das eine oder andere zu nutzen. Manchmal sieht vielleicht #Null einfach schöner aus als 0. Manchmal auch umgekehrt.

Re: #Null vs 0

Verfasst: 16.12.2014 16:09
von _JON_
Na z.b. bei WinAPI's gibt es doch optionale Parameter.
Da wird immer NULL geschrieben,wie:

GetModuleHandle(NULL)

In PB mach es keinen Unterschied ob ich GetModuleHandle_(#NULL) oder GetModuleHandle_(#0) schreiben.

Re: #Null vs 0

Verfasst: 16.12.2014 16:16
von ts-soft
Es gibt aber initialsierte Strings und nicht initialsierte Strings:

Code: Alles auswählen

test1.s = ""
test2.s

Debug @test1
Debug @test2
und es gibt #Null und #Null$

Code: Alles auswählen

Debug #Null
Debug #NULL$
aber die sind mehr zum "anschauen" :lol:

und bei der API ist es wurscht was Du schreibst!

Re: #Null vs 0

Verfasst: 16.12.2014 16:20
von NicTheQuick
Ja, weil das NULL aus der MSDN die Konstante NULL aus den Header-Dateien der WinAPI ist. In C/C++ schreibst du einfach "#define NULL 0" und schon wird die Zeichenkette NULL überall zu 0 übersetzt. Und da bei PB Konstanten eben mit einer Raute beginnen, ist das genau das gleiche.

Im Grunde ist es doch nur eine Konventionsfrage. NULL lässt sich meiner Meinung in einer Dokumentation wie der MSDN einfach leichter lesen als eine 0, oder war's vielleicht auch ein O?
Also es geht hier eigentlich um eine Frage, über die man gar nicht diskutieren braucht, weil jeder einfach das nutzen sollte, was er mag.
Es ist ein ähnliches Thema wie die Wahl der Sprache für den Code und Kommentare oder wie man seine Variablennamen formatiert:

Code: Alles auswählen

; Definition der Variablen 'meineVariable.i'
Define.i meineVariable = 123
Define meineVariable = 123 ; meineVariable setzen.
Define.i MeineVariable
Define MEINE_VARIABLE.I
; Definition of my_variable.i
Define.i my_variable
:wink:

Re: #Null vs 0

Verfasst: 16.12.2014 16:30
von _JON_
Okay, dann ist es also das Gleiche :D

Verfasst: 16.12.2014 18:07
von CodeCommander
~ DELETE ~

Re: #Null vs 0

Verfasst: 16.12.2014 19:06
von _JON_
CodeCommander, Nö, kein Danke für dich. :?

Meine Frage war ja nun mal der Unterschied von Null und 0.
Und Du hast meine Vermutung das es einen Unterschied gibt bestätigt anstatt wiederlegt.

Re: #Null vs 0

Verfasst: 01.05.2015 15:24
von lite
ts-soft hat geschrieben:
Debug @test1
Debug @test2[/code]
und es gibt #Null und #Null$

Code: Alles auswählen

Debug #Null
Debug #NULL$
aber die sind mehr zum "anschauen" :lol:

und bei der API ist es wurscht was Du schreibst!
Hallo

Ich dachte am Anfang auch das es Wurscht ist bei Winapi.
Das ist aber nicht so. Bei manchen API ist nur #null$ statt #null oder 0 gültig.
Sonst funktionieren einige Dll-Calls nicht.

Grüße
Lite