Ausrufezeichen

FreeBASIC-Referenz » Operatoren in FreeBASIC » Ausrufezeichen

Das Ausrufezeichen ! aktiviert die Verwendung von Escape-Zeichen in Strings. Dadurch werden in FreeBASIC Backslashes ("\", ASCII-Code 92) als Escape-Zeichen verwendet. Der Ausdruck hinter dem Escape-Zeichen wird nicht 1:1 ausgegeben, sondern zuerst interpretiert. Folgt dem Zeichen eine Zahl, so funktioniert das Zeichen wie ein CHR; anstelle der Zahl wird das zugehörige ASCII-Zeichen ausgegeben. Die Zahl kann in jedem beliebigen Zählsystem angegeben werden, wenn das Präfix &? verwendet wird (z.B. &h für hexadezimal).

Außerdem werden folgende Strings von FreeBASIC gesondert behandelt:

Beispiel:

#IF __FB_PCOS__
  #DEFINE NEWLINE !"\r\n"  ' Windows-Zeilenumbruch
#ELSEIF __FB_UNIX__
  #DEFINE NEWLINE !"\n"    ' UNIX/Linux-Zeilenumbruch
#ELSE
  #ERROR "Fehler: Plattform nicht unterstützt"
#ENDIF

DIM AS STRING meldung

meldung = !"\45 Das ist die \"erste\" Zeile\r\nDas "
meldung &= !"ist die \"zweite\" Zeile \45"
PRINT meldung

PRINT NEWLINE & "^-- NEWLINE --v" & NEWLINE;
SLEEP

Ausgabe:

- Das ist die "erste" Zeile
Das ist die "zweite" Zeile -

^-- CRLF --v

Das Ausrufezeichen arbeitet als Preprozessor. Es kann nur vor in Anführungszeichen gesetzten Zeichenketten eingesetzt werden, nicht jedoch vor Variablen o. ä. Folgendes Beispiel wird daher einen Compilier-Fehler erzeugen:

DIM AS STRING text = "Text mit einem\r\nZeilenumbruch"
PRINT !text    ' nicht erlaubter Aufruf!!

Bis FreeBASIC v0.16 war es möglich, den Compiler dazu anzuweisen, generell in allen Strings die Escape-Sequenzen zu interpretieren. Dazu wurde die Anweisung OPTION ESCAPE eingesetzt. Um anschließend Strings zu kennzeichnen, deren Inhalt nicht interpretiert werden sollte, wurde vor diese Strings ein Dollarzeichen $ gesetzt. Seit FreeBASIC v0.17 ist OPTION ESCAPE jedoch nur noch in der Dialektform -lang deprecated erlaubt. Das Dollarzeichen kann zwar weiter verwendet werden, hat aber ohne OPTION ESCAPE keine praktische Auswirkung mehr.

Unterschiede zu QB: neu in FreeBASIC