Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - WSTRING (Datentyp)

Referenz-Navigation

 

Typ: Datentyp

Ein BefehlsreferenzeintragSTRING ist eine Zeichenkette, die einen zusammenhängenden Text, einzelne Wörter, Buchstaben oder sonstige Zeichen enthalten kann; auch Leerstrings (also Strings ohne jeglichen Inhalt) sind möglich.

Ein WSTRING im Speziellen ist ein BefehlsreferenzeintragArray (siehe BefehlsreferenzeintragDIM) fester Größe aus wide-chars (je nach Betriebssystem 16bit- bzw. 32bit-Zeichen), das mit einem Nullzeichen (BefehlsreferenzeintragWCHR(0)) endet; er ist also wie der BefehlsreferenzeintragZSTRING ein null-terminierter String. Deshalb darf WCHR(0) niemals innerhalb eines WSTRINGs verwendet werden; andernfalls wird die Zeichenkette unterbrochen.

Im Allgemeinen verhält sich der WSTRING wie ein ZSTRING. Der einzige Unterschied besteht darin, dass pro Zeichen zwei (unter Windows) bzw. vier (unter Linux) Bytes reserviert werden.

Dieser Typ wurde bereitgestellt, um nicht-latein-basierende Alphabete zu unterstützen. Alle STRING-Operatoren und STRING-Funktionen (wie BefehlsreferenzeintragLEFT) funktionieren bereits mit WSTRINGs. In einigen Fällen wurden spezielle WSTRING-Routinen wie BefehlsreferenzeintragWCHR geschrieben.

Achtung: Unicode-Zeichen im Quelltext können vom Compiler nur korrekt umgesetzt werden, wenn das Externer Link!Byte Order Mark (BOM) gesetzt ist.

Der FreeBASIC-Compiler selbst unterstützt neben ASCII-Dateien mit UNICODE-Escape-Sequenzen (\u; siehe dazu erklärend auch BefehlsreferenzeintragOPTION ESCAPE) auch in UTF-8, UTF-16LE, UTF-16BE, UTF-32LE und in UTF-32BE codierte Quellcodes.

Beispiel:

' Bereite einen normalen STRING, einen
' WSTRING fester Länge (statisches Array)
' und einen WSTRING PTR (dynamisches Array) vor
DIM AS STRING nst
DIM AS WSTRING * 11 wst    ' später sollen 10 Zeichen gespeichert
                           ' werden. Zusätzlich muss Platz für ein
                           ' Null-Zeichen bereitgehalten werden.
DIM AS WSTRING PTR wstp

' befülle jeden Stringtyp mit der Zeichenkette "hello"
nst  = "hello"
wst  = "hello"
wstp = CALLOCATE(6*SIZEOF(WSTRING))  ' Da dieser ein Pointer ist, muss zuerst der
                                     ' Speicherbereich für fünf Zeichen + ein
*wstp = "hello"                      ' Nullzeichen reserviert werden. Der für
                                     ' jedes Zeichen benötigte Speicherplatz hängt
                                     ' vom Betriebssystem ab.

' die drei Stringtypen ausgeben
PRINT "Inhalte:"
PRINT "nst  :", nst
PRINT "wst  :", wst
PRINT "wstp :", wstp
PRINT "*wstp:", *wstp
PRINT

' die Länge der Stringtypen ausgeben
PRINT "LEN(x)"
PRINT "nst  :", LEN(nst  )
PRINT "wst  :", LEN(wst  )
PRINT "wstp :", LEN(wstp )
PRINT "*wstp:", LEN(*wstp)
PRINT

' die Größe der Speicherstruktur ausgeben
PRINT "SIZEOF(x)"
PRINT "nst  :", SIZEOF(nst  )
PRINT "wst  :", SIZEOF(wst  )
PRINT "wstp :", SIZEOF(wstp )
PRINT "*wstp:", SIZEOF(*wstp)
PRINT

' die Zeichenkette " Welt" an die Stringtypen anhängen
nst &= " Welt"    ' FreeBASIC verwaltet den Speicher für normale Strings
                  ' automatisch.
wst &= " Welt"    ' Da dieser WTRING fixed length ist, muss kein zusätz-
                  ' licher Speicher reserviert werden. Da nur Platz für
                  ' zehn Bytes reserviert wurde, ist 'wst' jetzt voll,
                  ' eine längere Zeichenkette kann man nicht speichern.
wstp = REALLOCATE(wstp, 12*SIZEOF(WSTRING))  ' Zusätzlichen Speicher re-
                                             ' servieren, um die Zeichen-
                                             ' kette anhängen zu können,
                                             ' und dabei das Nullzeichen
                                             ' beachten.
*wstp &= " Welt"  ' Jetzt kann auch hier ganz normal verfahren werden.

' ein einzelnes Zeichen austauschen:
nst [1] = 97     ' Benutze String-Indizierung: tausche
                 ' das zweite Zeichen durch
wst [1] = 97     ' CHR(97) aus - ein kleines a.
wstp[1] = 97     ' Funktioniert problemlos bei allen
                 ' Typen.

' die drei Stringtypen ausgeben
PRINT "Inhalte:"
PRINT "nst  :", nst
PRINT "wst  :", wst
PRINT "wstp :", wstp
PRINT "*wstp:", *wstp
PRINT

' nicht vergessen: den Speicher wieder freigeben:
DEALLOCATE wstp

SLEEP

Ausgabe:

Inhalte:
nst  :        hello
wst  :        hello
wstp :        3291344
*wstp:        hello

LEN(x)
nst  :         5
wst  :         5
wstp :         4
*wstp:         5

SIZEOF(x)
nst  :         12
wst  :         22
wstp :         4
*wstp:         0

Inhalte:
nst  :        hallo Welt
wst  :        hallo Welt
wstp :        3291440
*wstp:        hallo Welt

Unterschiede zu QB: neu in FreeBASIC

Plattformbedingte Unterschiede:
Die Unterstützung von WSTRINGs hängt von der C runtime library ab, die unter den verschiedenen Plattformen variieren kann.

Unterschiede zu früheren Versionen von FreeBASIC:

Siehe auch:
BefehlsreferenzeintragWSTRING (Funktion), BefehlsreferenzeintragWCHR, BefehlsreferenzeintragWSTR, BefehlsreferenzeintragWBIN, BefehlsreferenzeintragWHEX, BefehlsreferenzeintragWOCT, BefehlsreferenzeintragWSPACE, BefehlsreferenzeintragWINPUT, BefehlsreferenzeintragSTRING (Datentyp), BefehlsreferenzeintragZSTRING, BefehlsreferenzeintragDatentypen, BefehlsreferenzeintragDatentypen und Deklarationen, BefehlsreferenzeintragString-Funktionen


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 07.07.2007 von Redakteurytwinky angelegt.
  • Die aktuellste Version wurde am 27.08.2020 von Redakteurnemored gespeichert.
  Versionen Versionen