Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Änderung am Befehl NULL ?
#24
Der Wanderer schrieb:StrToAdr hat zwei Unschönheiten:

1. Im Englischen schreibt man "Address" mit 2 d, also "StrToAddr"
2. Die Beschreibung passt nicht ganz. Es konvertiert keinen String zu einer Adresse, sondern holt sich die Adresse eines Strings. Um genauer zu sein, es kopiert den String und setzt ein 0 Byte an das Ende, und gibt dann die Adresse zurück. Der Grund dafür ist dass BlitzBasic 1 keine 0-terminierten Strings hatte, für OS funktionen aber solche gebraucht werden. Deshalb heist die Funktion überhaupt auch (missverständlicherweise) "Null". Besser wäre sowas wie "GetStrAddr" oder "ToCStr", aber seit man auch "&" schreiben kann, z.B. "&myString$", ist der Befehl nicht mehr notwendig.

Die Funktion müsste etwa "GetAddrOfNewAllocStr" heißen wenn man sich den Funktionsaufbau ansieht!
Das mit "&" hat soweit ich mich erinnere einen gravierenden Nachteil sobald der String nur innerhalb der Funktion existiert/verwendet wird ist dessen Adresse nur innerhalb der Funktion gültig da die Basicstrings dynamisch verwaltet werden. Und da hat soweit ich das jetzt verstanden habe NULL("String") den Vorteil gehabt das der String für die ganze Laufzeit des Programms allociert geblieben ist.
Zitieren


Nachrichten in diesem Thema

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste