Welche Var.-Typen können =NULL sein?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Rick_72

Betreff: Welche Var.-Typen können =NULL sein?

BeitragMo, Sep 21, 2009 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

entgegen der Hilfe scheint NULL nur bei Types zugelassen zu sein. Ist dem so oder merk ich's nicht? Wenn ich zB einen Integer NULLen will (steht ja so in der Befehls-Referenz; bevor sich jetzt wieder jemand frühzeitig vomitieren möchte, sowas ist durchaus möglich), meckert er über "Illegal type conversion".

Nun, die Offensichtlichkeit steht der Referenz entgegen. Wer weiss darüber was?

Danke!

P.S.: es geht darum ..
Code: [AUSKLAPPEN]
wert$="!"
wert$=Null   ;geht nicht -> gibt Fehlermeldung


Type test
   Field wert$
End Type
wert1.test = New test
wert1      = Null   ; geht natürlich wunderbar.



________
B3D V1.99

Der Eisvogel

BeitragMo, Sep 21, 2009 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich versteh das Problem nicht. In der Hilfe steht, dass es nur bei Types geht. Stimmt ja auch. In anderen Sprachen geht es vlt aber in BB halt nicht.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Rick_72

BeitragMo, Sep 21, 2009 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Aha?! Habe ich eine falsche/alte Hilfe? Bei mir steht:

Zitat:
Variable= NULL

Beschreibung
NULL setzt eine Variable zurück. Eigentlich wird der Variable nur der Wert Null zugewiesen. Einer Stringvariable wird dagegen ein leerer String zugewiesen.

Beachte, dass die Variable dadurch nicht entfernt wird, sondern nur ein Wert gelöscht wird.

Parameter
-

Rückgabewert
Die Variable wird auf Null zurückgesetzt


Beispiel
Bei diesem Beispiel wird der Variable Txt$ ein Text zugewiesen, dann ausgegeben und aus dem Speicher gelöscht:

Txt$="Hello World"
PRINT Txt$
Txt$=NULL


Ging wohl früher mal. In der aktuellen Version steht's nur mit Types. OK, damit hat sich die Sache erledigt.

FireballFlame

BeitragMo, Sep 21, 2009 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, geht nicht.
Wüsste aber auch nicht, wozu.
Einen leeren String zuweisen kann man mit Txt$="".
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Der Eisvogel

BeitragMo, Sep 21, 2009 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist aber nicht aus der Hilfe vom Forum, oder? Das stand soweit ich es vefolgt habe noch nie drin.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Eingeproggt

BeitragMo, Sep 21, 2009 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Keine Ahnung wo du die Beschreibung ausgegraben hast, die korrekte Beschreibung findet sich hier:

Null
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Rick_72

BeitragMo, Sep 21, 2009 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Weiss ich doch mittlerweile, dass meine Hilfe-Dateien very obsolete waren. Ich bin halt der Illusion verfallen, dass bei Auslieferung von BB immer die aktuelle Version dem Downlad beiliegt (habe erst vor 4 Wochen B3D gekauft; aber: nicht denken, alles prüfen). Wie gesagt: dumm von mir.

Die oben von mir gequotete Version der Hilfe ist von 2002. Da ging's wohl noch mit allen Typen.



@FireballFlame:

Das macht extremst Sinn und ist deswegen auch in (fast allen) höheren Sprachen so vorgesehen. Beispiel: Du hast eine Funktion, die irgendwas mit einer Int.-Var. machen soll, falls diese nicht NULL ist, also einen Wert hat (angenommen, Du brauchst für Deine Berechnungen den kompletten Int.-Wertebereich, kannst also nicht zB die 0 oder eine andere Zahl "reservieren"), also zB:

Code: [AUSKLAPPEN]
function test(wert)
  if wert<>NULL then
    mache tolle sachen mit wert
  endif
end function


Willst Du testen, ob die Variable während des Programmablaufs gesetzt wurde (also einen Weert hat; <> NULL) ist Sache hiermit erledigt. Sonst musst Du irgendwelche Hilfsvariablen nutzen, die Du immer mitschleppen musst. Was natürlich geht, aber unbequem und nicht so elegant ist.

Eingeproggt

BeitragMo, Sep 21, 2009 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Man verzeihe mir mein Unwissen falsch ich falsch liegen soll aber:
So wie du dir das vorstellst geht das nur mit rein objektorienterten Sprachen.
Kann mir gar nicht vorstellen dass das mit Blitz jemals ging?
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

DaysShadow

BeitragMo, Sep 21, 2009 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Null besagt ja lediglich das ein Wert nicht existiert bzw. beschreibt es die Abwesenheit eines Wertes, wenn man Var = Null schreibt, dann hat die Variable halt keinen bekannten Wert, hat an sich nichts mit Objekt-Orientierung zu tun.

MfG DaysShadow
Blessed is the mind too small for doubt

Silver_Knee

BeitragMo, Sep 21, 2009 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja wenn man irgendwo den Wert NULL hat wird entweder die Variable auf ein bestimmten Speicher der als "das hier ist der NULL Speicher" bekannt ist gelegt oder man schleppt (oft s in Datenbanken) ein bit mit dass sagt, dass der wert NULL ist oder net

n blitz gibt es null nur bei types mit dieser ersten Form. Strings,ints etc haben immer einen wert (der type antrag eigendlich auch... halt den von NULL)

FireballFlame

BeitragDi, Sep 22, 2009 3:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Rick_72 hat Folgendes geschrieben:
Das macht extremst Sinn und ist deswegen auch in (fast allen) höheren Sprachen so vorgesehen. Beispiel: Du hast eine Funktion, die irgendwas mit einer Int.-Var. machen soll, falls diese nicht NULL ist, also einen Wert hat (angenommen, Du brauchst für Deine Berechnungen den kompletten Int.-Wertebereich, kannst also nicht zB die 0 oder eine andere Zahl "reservieren")

Das wäre mir neu.
Einer Integer-Variablen Null zuweisen geht soweit ich weiß weder in Java noch in C, und ich wüsste auch nicht, wie. Wenn der komplette Wertebereich der Variablen bereits mit Zahlen belegt ist, kann es ja schließlich keinen Zustand mehr geben, der Null symbolisiert.
Man könnte, wie Silver_Knee schrieb, einen Pointer auf einen bestimmten Wert setzen, aber das ist eine andere Sache, und BB kennt so etwas ja gar nicht.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group