FB-Dialektformen

FreeBASIC-Referenz » Verschiedene Themen » FB-Dialektformen

Seit FreeBASIC v0.17 existiert die Kommandozeilenoption "-lang". Diese wird verwendet, um den Kompatibilitätsmodus auf verschiedene Versionen von FreeBASIC einzustellen. Die Option "-lang" benötigt einen Parameter, der angibt, mit welchem Kompatibilitätsmodus compiliert werden soll:

OptionBeschreibung
fbFreeBASIC-Kompatibilität (Standard)
deprecatedKompatibilität zu früheren Versionen von FreeBASIC
fbliteKompatibilität zu FreeBASIC, aber mit einem Programmierstil, der kompatibler zu QBASIC ist
qbQBASIC-Kompatibilität

Seit FreeBASIC v0.20 ist auch die Optionsangabe als Metabefehl #LANG "Sprachversion" am Anfang des Quelltextes möglich.
Die Option "-lang" wurde nötig, um Objektorientierung und andere Features in FreeBASIC zu ermöglichen, ohne die Abwärtskompatibilität zu QB oder zu Quellcodes für ältere Versionen von FreeBASIC aufgeben zu müssen oder viele verschiedene Compiler-Versionen entwickeln zu müssen. Um alte GW-BASIC- und QBasic-Quellcodes ohne größere Änderungen compilieren zu können, geben Sie die Option "-lang qb" an.

Beispiel: Um eine QBasic-Quelltextdatei mit dem Namen myprog.bas zu compilieren, geben Sie in der Befehlszeile

fbc myproc.bas -lang qb

ein (evtl. muss der Pfad zum Compiler ebenfalls angegeben werden).

Um Codes zu compilieren, die für FreeBASIC v0.16 oder älter geschrieben wurden, geben Sie die Kommandozeile "-lang deprecated" an. Der Modus "-lang fb" ist der Standard-Modus. Diese Option muss nicht explizit angegeben werden. "-lang fb" unterscheidet sich von "-lang deprecated" durch diese Dinge:

-lang fb
Nicht mehr unterstützt

-lang deprecated
Unterstützt
alles, das bereits in FreeBASIC v0.16 unterstützt wurde, mit Ausnahme von ON...GOSUB, ON...GOTO und ON...GOSUB (auch auf der Modulebene)

Nicht unterstützt

Die Option "-lang deprecated" wurde bereitgestellt, um ein einfaches Upgrade des Codes von einer Entwicklungsversion in die nächste zu ermöglichen. Sie wird möglicherweise in einem Major-Release wie FreeBasic 1.0 entfernt.

-lang fblite
Unterstützt
alles, was in "-lang deprecated" erlaubt ist, außer SCOPE-Blöcken: Variablen gehören dem aktuellen Scope (Programmblock) an.

-lang qb
Unterstützt
alles, was in "-lang fb" nicht erlaubt ist. Außerdem:

Nicht unterstützt

FB-eigene Befehle im QB-Kompatiblitätsmodus
Befehle, die in FreeBASIC neu hinzugekommen sind, können auch im QB-Kompatiblitätsmodus benutzt werden: Versehen Sie diese mit einem doppelten Unterstrich am Wortanfang, um sie zu benutzen. Beispiel: __INSTRREV
Beachten Sie, dass bei Befehlen, deren Verhalten sich in FreeBasic geändert hat (z. B. SLEEP oder INKEY), auch das FreeBASIC-Verhalten übernommen wird. So wartet __SLEEP 1 im QB-Kompatibilitätsmodus eine Millisekunde, während SLEEP 1 - wie aus QB gewohnt - eine Sekunde wartet. Bei __INKEY wird dementsprechend CHR(255) statt CHR(0) als erweitertes Zeichen benutzt.