FreeBASIC 1.0.1 — kompletní referenční příručka

Kompletní offline referenční příručka jazyka FreeBASIC (verze kompilátoru 1.0.1), 548 klíčových slov/funkcí seřazených podle funkce, plus přepínače příkazové řádky kompilátoru fbc. Sestaveno podle oficiální dokumentace FreeBASIC (fbc, GPL/GFDL).

Úvod do FreeBASIC 1.0.1

FreeBASIC je svobodný (open-source), na příkazové řádce ovládaný kompilátor jazyka BASIC pro Windows, Linux, DOS, FreeBSD a další platformy, se syntaxí navazující na Microsoft QuickBASIC / QBasic, ale rozšířenou o moderní prvky: ukazatele, celočíselné typy různých velikostí a se znaménkem i bez, jmenné prostory, objektově orientované programování (Type/Class s dědičností, konstruktory, destruktory, virtuálními metodami), přetěžování procedur a operátorů, inline assembler, preprocesor podobný jazyku C, sdílené a dynamicky linkované knihovny a vícevláknové programování. Verze 1.0.1 (2013) je první stabilní řada 1.0 kompilátoru fbc.

Struktura programu

' komentář
#include "soubor.bi"

Dim x As Integer = 10

Sub Pozdrav(jmeno As String)
    Print "Ahoj, " & jmeno
End Sub

Pozdrav("svete")
Sleep

Zdrojové soubory mají příponu .bas, hlavičkové soubory .bi. Kód mimo proceduru se vykonává v pořadí, v jakém je zapsán (pokud není zadán jiný vstupní modul přepínačem -m). Řádky komentářů začínají apostrofem ' nebo klíčovým slovem Rem.

Tři jazykové dialekty

Kompilátor lze přepínačem -lang přepnout mezi dialekty: fb (výchozí, plné možnosti jazyka, case-sensitive identifikátory u některých prvků), qb (kompatibilita s QuickBASIC/QBasic) a fblite (zjednodušený režim bez nutnosti explicitních deklarací typů, ale s moderními rozšířeními) a deprecated (staré, dnes již neudržované chování).

Datové typy — přehled velikostí

TypVelikostRozsah / poznámka
Boolean1 BTrue(-1) / False(0)
Byte1 B-128 až 127
UByte1 B0 až 255
Short2 B-32768 až 32767
UShort2 B0 až 65535
Long4 B-2 147 483 648 až 2 147 483 647
ULong4 B0 až 4 294 967 295
Integer4/8 Bvelikost dle platformy (32/64bit)
UInteger4/8 Bvelikost dle platformy (32/64bit)
LongInt8 B64bitové celé číslo se znaménkem
ULongInt8 B64bitové celé číslo bez znaménka
Single4 Bplovoucí řádová čárka, jednoduchá přesnost
Double8 Bplovoucí řádová čárka, dvojitá přesnost
Stringproměnnádynamický nebo pevné délky (String * n)
ZStringproměnnářetězec ukončený nulou (C-string)
WStringproměnnářetězec širokých znaků

Příkazová řádka kompilátoru fbc

Základní syntaxe: fbc [přepínače] soubor1.bas [soubor2.bas ...]

-c

fbc -c soubor.bas

Zkompiluje pouze do objektového souboru (.o), bez linkování.

-d SYMBOL[=hodnota]

fbc -d DEBUG=1 soubor.bas

Definuje preprocesorový symbol z příkazové řádky (jako #define).

-e

fbc -e soubor.bas

Zapne kontrolu chyb za běhu (error checking, pole meze apod.).

-exx

fbc -exx soubor.bas

Zapne rozšířené kontroly za běhu včetně kontrol Null ukazatelů.

-fpu {x87|sse}

fbc -fpu sse soubor.bas

Zvolí, která jednotka pro desetinná čísla se má použít.

-g

fbc -g soubor.bas

Zahrne ladicí informace pro debugger (gdb) a povolí Assert.

-i cesta

fbc -i cesta soubor.bas

Přidá adresář do cest prohledávaných pro #include.

-l knihovna

fbc -l m soubor.bas

Přilinkuje zadanou knihovnu.

-lang {fb|qb|fblite|deprecated}

fbc -lang qb soubor.bas

Zvolí jazykový dialekt kompilátoru.

-m modul

fbc -m main soubor1.bas soubor2.bas

Určí modul obsahující vstupní bod programu (výchozí Main).

-maxerr n

fbc -maxerr 5 soubor.bas

Nastaví maximální počet chyb, po kterém kompilace skončí.

-mt

fbc -mt soubor.bas

Slinkuje program s vícevláknovou (thread-safe) run-time knihovnou.

-o jméno

fbc -o vystup soubor.bas

Nastaví jméno výstupního souboru.

-O úroveň

fbc -O 2 soubor.bas

Nastaví úroveň optimalizace (0 až 5).

-p cesta

fbc -p cesta soubor.bas

Přidá adresář do cest prohledávaných pro knihovny (linker).

-r

fbc -r soubor.bas

Vygeneruje pouze assemblerový výstup (.asm), bez sestavení.

-s {console|gui|dll|lib}

fbc -s gui soubor.bas

Zvolí typ výstupu (konzolová aplikace, GUI, DLL, statická knihovna).

-v

fbc -v soubor.bas

Zobrazí podrobnosti o průběhu kompilace (verbose).

-w {all|pedantic|jazyk}

fbc -w all soubor.bas

Zapne dodatečná varování při kompilaci.

-x jméno

fbc -x program.exe soubor.bas

Alternativní způsob zadání jména výstupního souboru.

--version

fbc --version

Vypíše verzi kompilátoru FreeBASIC a ukončí program.

Pole (Arrays) (5 klíčových slov)

Erase

Erase pole[, pole2 ...]

Zruší (uvolní) obsah statického nebo dynamického pole; u dynamických polí uvolní i paměť.

LBound

LBound( pole [, dimenze] )

Vrátí dolní mez (index) zadané dimenze pole; výchozí dolní mez je 0.

Preserve

ReDim Preserve pole(nové_meze)

Modifikátor příkazu ReDim, který zachová stávající obsah pole při změně velikosti poslední dimenze.

ReDim

ReDim [Preserve] pole(meze) [As typ]

(Znovu)vytvoří dynamické pole se zadanými mezemi; vyžaduje deklaraci pomocí Dim ... ().

UBound

UBound( pole [, dimenze] )

Vrátí horní mez (nejvyšší platný index) zadané dimenze pole.

Práce s bity (7 klíčových slov)

Bit

Bit( výraz, bitpozice )

Vrátí hodnotu 0 nebo 2^bitpozice podle toho, zda je daný bit ve výrazu nastaven.

BitReset

BitReset( výraz, bitpozice )

Vrátí výraz se zadaným bitem vynulovaným (nastaveným na 0).

BitSet

BitSet( výraz, bitpozice )

Vrátí výraz se zadaným bitem nastaveným na 1.

HiByte

HiByte( výraz )

Vrátí horní (vyšší) bajt 16bitové hodnoty.

HiWord

HiWord( výraz )

Vrátí horní (vyšší) 16bitové slovo 32bitové hodnoty.

LoByte

LoByte( výraz )

Vrátí dolní (nižší) bajt 16bitové hodnoty.

LoWord

LoWord( výraz )

Vrátí dolní (nižší) 16bitové slovo 32bitové hodnoty.

Přepínače výchozích datových typů (Def*) (22 klíčových slov)

DefByte

DefByte písmeno[-písmeno] [, ...]

Nastaví, že proměnné začínající zadaným písmenem mají implicitně typ Byte, pokud nejsou deklarovány jinak.

DefDbl

DefDbl písmeno[-písmeno]

Nastaví implicitní typ Double pro proměnné začínající daným písmenem.

DefInt

DefInt písmeno[-písmeno]

Nastaví implicitní typ Integer pro proměnné začínající daným písmenem.

DefLng

DefLng písmeno[-písmeno]

Nastaví implicitní typ Long pro proměnné začínající daným písmenem.

Deflongint

DefLongInt písmeno[-písmeno]

Nastaví implicitní typ LongInt pro proměnné začínající daným písmenem.

DefShort

DefShort písmeno[-písmeno]

Nastaví implicitní typ Short pro proměnné začínající daným písmenem.

DefSng

DefSng písmeno[-písmeno]

Nastaví implicitní typ Single pro proměnné začínající daným písmenem.

DefStr

DefStr písmeno[-písmeno]

Nastaví implicitní typ String pro proměnné začínající daným písmenem.

DefUByte

DefUByte písmeno[-písmeno]

Nastaví implicitní typ UByte pro proměnné začínající daným písmenem.

DefUInt

DefUInt písmeno[-písmeno]

Nastaví implicitní typ UInteger pro proměnné začínající daným písmenem.

Defulongint

DefULongInt písmeno[-písmeno]

Nastaví implicitní typ ULongInt pro proměnné začínající daným písmenem.

DefUShort

DefUShort písmeno[-písmeno]

Nastaví implicitní typ UShort pro proměnné začínající daným písmenem.

Option Base

Option Base 0|1

Nastaví výchozí dolní mez polí (0 nebo 1), pokud není explicitně uvedena.

Option ByVal

Option ByVal

Přepne výchozí způsob předávání parametrů procedur na ByVal místo ByRef (QB kompatibilita).

Option Dynamic

Option Dynamic

Nastaví, že pole deklarovaná bez explicitní velikosti jsou dynamická (na haldě).

Option Escape

Option Escape

Povolí escape sekvence (např. \n) v řetězcových literálech.

Option Explicit

Option Explicit

Vyžaduje explicitní deklaraci všech proměnných před použitím (zakáže implicitní deklaraci).

Option Gosub

Option Gosub

Povolí staré klíčové slovo GOSUB v daném souboru/kontextu.

Option Nogosub

Option NoGosub

Zakáže použití GOSUB v daném kontextu.

Option NoKeyword

Option NoKeyword ( "klíčové_slovo" [, ...] )

Zruší význam zadaných klíčových slov jako vyhrazených, takže je lze použít jako identifikátory.

Option Private

Option Private

Nastaví výchozí viditelnost symbolů modulu na Private.

Option Static

Option Static

Nastaví, že pole deklarovaná bez explicitní velikosti jsou statická.

Konzole (textový režim) (17 klíčových slov)

Beep

Beep

Vydá krátký zvukový signál reproduktorem počítače.

Cls

Cls [metoda]

Vymaže obsah textové obrazovky nebo grafického okna.

Color

Color [popředí][, pozadí]

Nastaví barvu textu a pozadí pro následující výstup.

CsrLin

CsrLin

Vrátí aktuální řádek (řádkovou pozici) kurzoru.

Open Cons

Open Cons For mód As #kanál

Otevře konzoli jako soubor pro čtení/zápis pomocí čísla kanálu.

Open Err

Open Err As #kanál

Otevře standardní chybový výstup (stderr) jako souborový kanál.

Open Pipe

Open Pipe "příkaz" For mód As #kanál

Otevře rouru (pipe) ke spuštěnému příkazu pro čtení nebo zápis.

Open Scrn

Open Scrn For mód As #kanál

Otevře obrazovku jako souborový kanál (starší alternativa Open Cons).

Pos

Pos( dummy )

Vrátí aktuální sloupcovou pozici kurzoru na konzoli.

Print

Print [#kanál,] [výrazy] [;|,]

Vypíše text/hodnoty na konzoli nebo do souboru; alias '?'.

Print Using

Print Using formát; výrazy

Vypíše hodnoty formátované podle šablony (obdoba Format).

Screen (Console)

Screen mód[, barvy][, stránky]

Nastaví textový/grafický režim obrazovky (konzolová varianta).

Spc

Spc(n)

Vloží do výstupu Print n mezer.

Tab

Tab(n)

Přesune výstupní pozici Print na sloupec n.

View (Console)

View Print [řádek1 To řádek2]

Omezí textový výstup na zadanou oblast řádků konzole.

Width

Width [sloupce, řádky] | Width #kanál, sloupce

Nastaví počet sloupců a řádků textového okna konzole nebo souboru.

Write

Write [#kanál,] výrazy

Zapíše hodnoty odděleně čárkami a v uvozovkách (u řetězců), vhodné pro pozdější Input #.

Datové typy a deklarace (33 klíčových slov)

As

Dim x As typ

Určuje datový typ proměnné, parametru, funkce nebo pole.

Boolean

Dim x As Boolean

Logický datový typ; hodnoty True (-1) nebo False (0), velikost 1 bajt.

Byte

Dim x As Byte

Celočíselný typ se znaménkem, 1 bajt, rozsah -128 až 127.

Const

Const jméno [As typ] = výraz

Deklaruje pojmenovanou konstantu vyhodnocenou při kompilaci.

Const (Qualifier)

Dim x As Const typ Ptr

Kvalifikátor typu označující, že hodnota, na kterou ukazatel ukazuje, je jen ke čtení.

Dim

Dim [Shared] jméno [(meze)] As typ [, ...]

Deklaruje proměnnou nebo pole daného typu.

Double

Dim x As Double

64bitové číslo s plovoucí desetinnou čárkou dvojité přesnosti.

Enum

Enum jméno ... End Enum

Definuje výčtový typ pojmenovaných celočíselných konstant.

Extends

Type odvozený Extends základní

Určuje, že typ dědí (rozšiřuje) členy jiného typu (jednoduchá dědičnost).

Integer

Dim x As Integer

Celé číslo se znaménkem, velikost odpovídá velikosti ukazatele (32 nebo 64 bitů).

Long

Dim x As Long

Celé číslo se znaménkem, 4 bajty (32 bitů).

LongInt

Dim x As LongInt

Celé číslo se znaménkem, 8 bajtů (64 bitů).

Object

Dim x As Object

Základní typ hierarchie tříd FreeBASIC (kořenová třída pro Extends).

Scope

Scope ... End Scope

Vytvoří nový lokální blok s vlastní platností proměnných.

Shared

Dim Shared jméno As typ

Zpřístupní proměnnou v procedurách jako sdílenou s hlavním modulem/vnějším blokem.

Short

Dim x As Short

Celé číslo se znaménkem, 2 bajty (16 bitů).

Single

Dim x As Single

32bitové číslo s plovoucí desetinnou čárkou jednoduché přesnosti.

Static

Static jméno As typ

Deklaruje lokální proměnnou, jejíž hodnota se zachovává mezi voláními procedury.

String

Dim x As String [* délka]

Typ pro textové řetězce; volitelně pevná délka (fixed-length string).

Type

Type jméno ... End Type

Definuje uživatelský strukturovaný typ (record) nebo třídu s metodami.

Type (Alias)

Type nový_typ As existující_typ

Vytvoří alias (jiné jméno) pro existující typ.

Type (Temporary)

Type(výraz)

Vytvoří dočasnou (anonymní) instanci typu pro předání jako parametr.

UByte

Dim x As UByte

Celé číslo bez znaménka, 1 bajt, rozsah 0-255.

UInteger

Dim x As UInteger

Celé číslo bez znaménka, velikost odpovídá Integer.

Ulong

Dim x As ULong

Celé číslo bez znaménka, 4 bajty.

ULongInt

Dim x As ULongInt

Celé číslo bez znaménka, 8 bajtů.

Union

Union jméno ... End Union

Struktura, jejíž všechny členy sdílejí stejné místo v paměti.

Unsigned

Dim x As Unsigned Integer

Modifikátor označující bezznaménkový celočíselný typ.

UShort

Dim x As UShort

Celé číslo bez znaménka, 2 bajty.

Var

Dim x As Var(výraz)

Odvodí (inferuje) typ proměnné z inicializačního výrazu.

With

With proměnná ... End With

Umožní zkrácený přístup ke členům proměnné/instance typu (přes '.').

WString

Dim x As WString [* délka]

Řetězec ze znaků wchar_t (širokých znaků, UTF-16/32 dle platformy).

ZString

Dim x As ZString [* délka]

Řetězec ukončený nulovým znakem (C-string), typicky přes ukazatel.

Datum a čas (23 klíčových slov)

Date

Date

Vrátí aktuální systémové datum jako řetězec MM-DD-YYYY.

DateAdd

DateAdd(interval, číslo, datum)

Přičte/odečte zadaný počet jednotek (rok, měsíc, den...) k datu.

DateDiff

DateDiff(interval, datum1, datum2)

Vrátí rozdíl mezi dvěma daty v zadaných jednotkách.

DatePart

DatePart(interval, datum)

Vrátí zadanou část data (rok, měsíc, den, hodinu...).

DateSerial

DateSerial(rok, měsíc, den)

Sestaví sériové datum (Double) ze zadaného roku, měsíce a dne.

DateValue

DateValue(řetězec)

Převede textovou reprezentaci data na serial date hodnotu.

Day

Day(datum)

Vrátí den v měsíci (1-31) ze zadaného data.

Hour

Hour(čas)

Vrátí hodinu (0-23) ze zadaného času.

IsDate

IsDate(výraz)

Vrátí True, pokud lze výraz interpretovat jako platné datum.

Minute

Minute(čas)

Vrátí minutu (0-59) ze zadaného času.

Month

Month(datum)

Vrátí číslo měsíce (1-12) ze zadaného data.

MonthName

MonthName(měsíc [, zkráceně])

Vrátí název měsíce jako řetězec.

Now

Now

Vrátí aktuální datum a čas jako serial hodnotu (Double).

Second

Second(čas)

Vrátí sekundu (0-59) ze zadaného času.

SetDate

SetDate [řetězec]

Nastaví systémové datum operačního systému.

SetTime

SetTime [řetězec]

Nastaví systémový čas operačního systému.

Time

Time

Vrátí aktuální systémový čas jako řetězec HH:MM:SS.

Timer

Timer

Vrátí počet sekund (Double) od půlnoci nebo od startu systému, dle platformy.

TimeSerial

TimeSerial(hodina, minuta, sekunda)

Sestaví serial čas z hodiny, minuty a sekundy.

TimeValue

TimeValue(řetězec)

Převede textovou reprezentaci času na serial hodnotu.

Weekday

Weekday(datum [, první_den])

Vrátí číslo dne v týdnu pro dané datum.

WeekdayName

WeekdayName(den [, zkráceně][, první_den])

Vrátí název dne v týdnu jako řetězec.

Year

Year(datum)

Vrátí rok ze zadaného data.

Ladění (Debug) (3 klíčových slov)

Assert

Assert(výraz)

Za běhu ověří podmínku; pokud je nepravdivá, ukončí program s hlášením (jen v debug módu).

AssertWarn

AssertWarn(výraz)

Jako Assert, ale při selhání pouze vypíše varování a pokračuje.

Stop

Stop

Zastaví běh programu (v debuggeru přeruší, jinak ukončí proces).

Zpracování chyb (9 klíčových slov)

Erfn

Erfn

Vrátí číslo souborového kanálu, u kterého došlo k poslední chybě.

Erl

Erl

Vrátí číslo řádku zdrojového kódu, na kterém nastala poslední chyba.

Ermn

Ermn

Vrátí textový popis poslední chyby.

Err

Err [= hodnota]

Vrátí nebo nastaví kód poslední chyby za běhu programu.

Error

Error kód_chyby

Vyvolá chybu se zadaným kódem, případně spustí obslužnou rutinu On Error.

Local

On Error Local ...

Modifikátor omezující platnost On Error handleru na aktuální proceduru.

On Error

On Error Goto návěští | On Error Goto 0

Nastaví obslužnou rutinu, na kterou se skočí při vzniku chyby.

Resume

Resume [návěští]

Pokračuje v běhu programu po ošetření chyby od řádku, kde chyba nastala, nebo od návěští.

Resume Next

Resume Next

Pokračuje v běhu programu na řádku následujícím po tom, kde nastala chyba.

Soubory (29 klíčových slov)

Access

Open jméno For mód Access přístup As #kanál

Určuje typ přístupu k otevíranému souboru (Read, Write, Read Write).

Append

Open jméno For Append As #kanál

Otevře soubor pro připojování textu na konec.

Binary

Open jméno For Binary As #kanál

Otevře soubor v binárním režimu pro čtení/zápis libovolných dat.

BLoad

BLoad jméno[, offset]

Načte binární obrazová data (uložená pomocí BSave) do paměti/na obrazovku.

BSave

BSave jméno, offset, délka

Uloží blok paměti (nebo obrazovky) do binárního souboru.

Close

Close [#kanál [, ...]]

Zavře otevřený soubor/kanál; bez parametru zavře všechny.

Encoding

Open jméno For mód Encoding "kódování" As #kanál

Určí textové kódování (např. utf8) pro čtení/zápis souboru.

EOF

EOF(kanál)

Vrátí True, pokud bylo dosaženo konce souboru.

FreeFile

FreeFile[(kanál)]

Vrátí první volné (nepoužité) číslo souborového kanálu.

Get # (File I/O)

Get #kanál, [záznam,] proměnná

Načte binární data ze souboru do proměnné.

Input #

Input #kanál, seznam_proměnných

Načte hodnoty oddělené čárkami ze souboru do proměnných.

Input (File I/O)

Open jméno For Input As #kanál

Otevře textový soubor pro sekvenční čtení.

Line Input #

Line Input #kanál, řetězec

Načte celý řádek textu ze souboru do řetězcové proměnné.

LOC

Loc(kanál)

Vrátí aktuální pozici (např. číslo záznamu) v souboru.

Lock

Lock #kanál [, rozsah]

Uzamkne soubor nebo jeho část proti přístupu jiných procesů.

LOF

Lof(kanál)

Vrátí celkovou velikost souboru v bajtech.

Open

Open jméno [For mód] [Access přístup] [Lock] As #kanál [Len=délka]

Otevře soubor pro čtení/zápis v zadaném režimu.

Output

Open jméno For Output As #kanál

Otevře textový soubor pro sekvenční zápis (přepíše obsah).

Print #

Print #kanál, výrazy

Zapíše formátovaný text do souboru; alias '? #'.

Put # (File I/O)

Put #kanál, [záznam,] proměnná

Zapíše binární data z proměnné do souboru.

Random

Open jméno For Random As #kanál Len=délka

Otevře soubor pro přístup s náhodným přístupem k záznamům pevné délky.

Read (File Access)

Open jméno For ... Access Read As #kanál

Omezí přístup k souboru pouze na čtení.

Read Write (File Access)

Access Read Write

Povolí ke souboru čtení i zápis současně.

Reset

Reset

Zavře všechny otevřené soubory a uvolní buffery.

Seek (Function)

Seek(kanál)

Vrátí aktuální pozici čtení/zápisu v souboru.

Seek (Statement)

Seek #kanál, pozice

Nastaví pozici pro příští čtení/zápis v souboru.

Unlock

Unlock #kanál [, rozsah]

Odemkne dříve uzamčenou část souboru.

Write #

Write #kanál, výrazy

Zapíše hodnoty do souboru odděleně čárkami, řetězce v uvozovkách.

Write (File Access)

Access Write

Omezí přístup k souboru pouze na zápis.

Grafika (46 klíčových slov)

Add (Graphics Put)

Put ..., Add

Režim Put přičítající barvu obrázku k cílovým pixelům.

Alpha (Graphics Put)

Put ..., Alpha

Režim Put kombinující obrázek s cílem podle alfa kanálu.

And (Graphics Put)

Put ..., And

Režim Put provádějící bitové AND mezi obrázkem a cílem.

Circle

Circle (x,y), poloměr [, barva] [, start, konec] [, poměr] [, f]

Nakreslí kružnici, oblouk nebo výseč.

Color

Color [popředí][, pozadí]

Nastaví barvu kreslení popředí/pozadí pro grafické příkazy.

Custom (Graphics Put)

Put ..., Custom

Umožní definovat vlastní funkci kombinující zdrojové a cílové pixely.

Draw

Draw řetězec_příkazů

Kreslí obrázek podle mikrojazyka příkazů (obdoba GW-BASIC DRAW).

Draw String

Draw String (x,y), text [, barva]

Vykreslí text pomocí načteného grafického fontu.

Event (Message Data From Screenevent)

ScreenEvent(event)

Přístup k datovým polím struktury události generované ScreenEvent.

Flip

ScreenSync / Flip

Přepne (zobrazí) zadní vyrovnávací paměť na obrazovku (double buffering).

Get (Graphics)

Get [cíl](x1,y1)-(x2,y2), pole

Uloží obdélníkovou oblast obrazovky do pole/bufferu.

ImageConvertRow

ImageConvertRow(zdroj, cíl, počet, formát)

Konvertuje řádek obrázkových dat mezi barevnými formáty.

ImageCreate

ImageCreate(šířka, výška [, barva][, bpp])

Vytvoří v paměti nový obrázek (buffer).

ImageDestroy

ImageDestroy(obrázek)

Uvolní paměť obrázku vytvořeného ImageCreate.

ImageInfo

ImageInfo(obrázek, šířka, výška, bpp, bajtů/řádek, formát)

Vrátí informace o rozměrech a formátu obrázku.

Line

Line [(x1,y1)]-(x2,y2)[, barva[, B[F]][, styl]]

Nakreslí úsečku, obdélník nebo vyplněný obdélník.

Or (Graphics Put)

Put ..., Or

Režim Put provádějící bitové OR mezi obrázkem a cílem.

Paint

Paint (x,y)[, barva/vzor][, ohraničení]

Vyplní souvislou oblast barvou nebo vzorkem.

Palette

Palette [index, barva] | Palette Get pole

Nastaví nebo přečte barvovou paletu obrazovky.

PCopy

PCopy zdroj, cíl

Zkopíruje obsah jedné obrazové stránky do druhé.

PMap

PMap(souřadnice, funkce)

Přepočítá souřadnice mezi fyzickým a logickým (View/Window) systémem.

Point

Point(x, y)

Vrátí barvu (index/RGB) pixelu na zadané souřadnici.

Pointcoord

Point(n, souřadnice)

Vrátí uloženou souřadnici posledního bodu kreslení.

PReset

PReset [(x,y)][, barva]

Vykreslí bod barvou pozadí (nastaví pixel na barvu 0/pozadí).

PSet

PSet [(x,y)][, barva]

Vykreslí (nastaví) jeden pixel zadanou barvou.

Pset (Graphics Put)

Put ..., PSet

Výchozí režim Put — přímé přepsání cílových pixelů obrázkem.

Put (Graphics)

Put [cíl] (x,y), pole/obrázek [, režim]

Vykreslí uložený obrázek/pole na obrazovku.

RGB

RGB(červená, zelená, modrá)

Sestaví hodnotu barvy z RGB složek.

RGBA

RGBA(červená, zelená, modrá, alfa)

Sestaví hodnotu barvy s alfa kanálem.

Screen

Screen mód[, barevná_hloubka][, stránky][, příznaky]

Nastaví grafický režim obrazovky (rozlišení, barvy).

ScreenControl

ScreenControl(příkaz, ...)

Provede řídicí operaci nad oknem/obrazovkou (např. pozice okna).

ScreenCopy

ScreenCopy [zdroj_stránka, cíl_stránka]

Zkopíruje obsah obrazové stránky do jiné.

ScreenEvent

ScreenEvent(event)

Vyzvedne další čekající událost okna/vstupu (klávesnice, myš).

ScreenGLProc

ScreenGLProc("jméno_funkce")

Vrátí ukazatel na OpenGL funkci pro pokročilé grafické operace.

ScreenInfo

ScreenInfo šířka, výška[, bpp][, bajtů/řádek][, ukazatel]

Vrátí informace o aktuálním grafickém režimu.

ScreenList

ScreenList

Vypíše dostupné grafické režimy podporované ovladačem.

ScreenLock

ScreenLock

Uzamkne obrazovku pro přímý přístup k paměti pixelů.

ScreenPtr

ScreenPtr

Vrátí ukazatel na paměť aktuální obrazové stránky.

ScreenRes

ScreenRes šířka, výška [, bpp][, stránky][, příznaky]

Nastaví rozlišení a hloubku barev grafického okna.

ScreenSet

ScreenSet [kreslicí_stránka, zobrazovaná_stránka]

Nastaví, do které stránky se kreslí a která se zobrazuje (double buffering).

ScreenSync

ScreenSync

Počká na vertikální synchronizaci a přepne stránky.

ScreenUnlock

ScreenUnlock

Odemkne obrazovku po ScreenLock.

Trans (Graphics Put)

Put ..., Trans

Režim Put ignorující (nekreslící) pixely s barvou pozadí (průhlednost).

View (Graphics)

View [(x1,y1)-(x2,y2)][, barva][, ohraničení]

Definuje výřez (viewport) pro kreslení v grafickém okně.

Window

Window [(x1,y1)-(x2,y2)] [Screen]

Definuje logický souřadnicový systém pro kreslicí příkazy.

Xor (Graphics Put)

Put ..., Xor

Režim Put provádějící bitové XOR mezi obrázkem a cílem.

Přístup k hardwaru (8 klíčových slov)

Inp

Inp(port)

Přečte bajt z hardwarového I/O portu (pouze DOS/x86).

Lpos

Lpos(kanál)

Vrátí aktuální pozici tisku na paralelním portu.

LPrint

LPrint výrazy

Vytiskne výraz na výchozí paralelní port/tiskárnu.

Lpt

Lpt(n)

Odkazuje na paralelní tiskový port č. n při otevírání.

Open Com

Open Com(param) As #kanál

Otevře sériový (COM) port pro komunikaci.

Open Lpt

Open Lpt(param) As #kanál

Otevře paralelní (LPT) port pro výstup.

Out

Out port, hodnota

Zapíše bajt na hardwarový I/O port (pouze DOS/x86).

Wait

Wait port, maska [, xor]

Čeká, dokud hodnota portu nesplní zadanou bitovou podmínku.

Operátory přiřazení (18 klíčových slov)

&= (Concatenate And Assign)

řetězec &= výraz

Připojí řetězec k proměnné a výsledek jí přiřadí.

*= (Multiply And Assign)

x *= výraz

Vynásobí proměnnou hodnotou a výsledek uloží zpět.

+= (Add And Assign)

x += výraz

Přičte hodnotu k proměnné a výsledek uloží zpět.

-= (Subtract And Assign)

x -= výraz

Odečte hodnotu od proměnné a výsledek uloží zpět.

/= (Divide And Assign)

x /= výraz

Vydělí proměnnou hodnotou a výsledek uloží zpět.

= (Assignment)

proměnná = výraz

Přiřadí hodnotu výrazu proměnné.

\= (Integer Divide And Assign)

x \= výraz

Provede celočíselné dělení a výsledek uloží zpět do proměnné.

^= (Exponentiate And Assign)

x ^= výraz

Umocní proměnnou a výsledek uloží zpět.

And= (Conjunction And Assign)

x And= výraz

Provede bitové/logické AND a výsledek uloží zpět.

Eqv= (Equivalence And Assign)

x Eqv= výraz

Provede bitovou ekvivalenci a výsledek uloží zpět.

Imp= (Implication And Assign)

x Imp= výraz

Provede bitovou implikaci a výsledek uloží zpět.

Let (Assignment)

Let proměnná = výraz

Historické (nepovinné) klíčové slovo pro přiřazení hodnoty.

Let() (Assignment)

Operator Let (...)

Přetížený operátor přiřazení definovaný uvnitř typu/třídy.

Mod= (Modulus And Assign)

x Mod= výraz

Vypočte zbytek po dělení a uloží jej zpět do proměnné.

Or= (Inclusive Disjunction And Assign)

x Or= výraz

Provede bitové/logické OR a výsledek uloží zpět.

Shl= (Shift Left And Assign)

x Shl= výraz

Posune bity proměnné vlevo a výsledek uloží zpět.

Shr= (Shift Right And Assign)

x Shr= výraz

Posune bity proměnné vpravo a výsledek uloží zpět.

Xor= (Exclusive Disjunction And Assign)

x Xor= výraz

Provede bitové/logické XOR a výsledek uloží zpět.

Aritmetické operátory (10 klíčových slov)

* (Multiply)

a * b

Vynásobí dvě hodnoty.

+ (Add)

a + b

Sečte dvě hodnoty nebo spojí řetězce (u String).

- (Negate)

-a

Unární mínus — změní znaménko hodnoty.

- (Subtract)

a - b

Odečte hodnotu b od a.

/ (Divide)

a / b

Vydělí a hodnotou b (výsledek desetinný).

\ (Integer Divide)

a \ b

Celočíselné dělení — vrátí celočíselný podíl bez zbytku.

^ (Exponentiate)

a ^ b

Umocní a na b-tou.

Mod (Modulus)

a Mod b

Vrátí zbytek po celočíselném dělení a / b.

Shl (Shift Left)

a Shl b

Posune bity a o b pozic vlevo.

Shr (Shift Right)

a Shr b

Posune bity a o b pozic vpravo.

Bitové (logické) operátory (6 klíčových slov)

And

a And b

Bitový/logický součin (AND) dvou hodnot.

Eqv

a Eqv b

Bitová/logická ekvivalence (negace XOR).

Imp

a Imp b

Bitová/logická implikace.

Not

Not a

Bitová/logická negace hodnoty.

Or

a Or b

Bitový/logický součet (OR) dvou hodnot.

Xor

a Xor b

Bitový/logický nesoučet (exkluzivní OR).

Zkrácené vyhodnocení (Short circuit) (2 klíčových slov)

AndAlso

a AndAlso b

Logické AND se zkráceným vyhodnocením — b se vyhodnotí jen pokud a je True.

OrElse

a OrElse b

Logické OR se zkráceným vyhodnocením — b se vyhodnotí jen pokud a je False.

Matematické funkce (17 klíčových slov)

Abs

Abs(x)

Vrátí absolutní hodnotu čísla.

Acos

Acos(x)

Vrátí arkuskosinus x (v radiánech).

Asin

Asin(x)

Vrátí arkussinus x (v radiánech).

Atan2

Atan2(y, x)

Vrátí úhel (arkustangens) bodu (x,y) v radiánech, plný rozsah -π až π.

Atn

Atn(x)

Vrátí arkustangens x (v radiánech).

Cos

Cos(x)

Vrátí kosinus úhlu x (v radiánech).

Exp

Exp(x)

Vrátí e umocněné na x.

Fix

Fix(x)

Ořízne desetinnou část čísla směrem k nule.

Frac

Frac(x)

Vrátí desetinnou (zlomkovou) část čísla.

Int

Int(x)

Zaokrouhlí číslo dolů na nejbližší celé (podlaha).

Log

Log(x)

Vrátí přirozený logaritmus x.

Randomize

Randomize [seed][, generátor]

Inicializuje generátor náhodných čísel.

Rnd

Rnd[(x)]

Vrátí náhodné desetinné číslo v rozsahu 0 až 1.

Sgn

Sgn(x)

Vrátí znaménko čísla: -1, 0 nebo 1.

Sin

Sin(x)

Vrátí sinus úhlu x (v radiánech).

Sqr

Sqr(x)

Vrátí druhou odmocninu x.

Tan

Tan(x)

Vrátí tangens úhlu x (v radiánech).

Práce s pamětí (9 klíčových slov)

Allocate

Allocate(bajty)

Alokuje blok paměti na haldě a vrátí na něj ukazatel (neinicializovaný).

CAllocate

CAllocate(bajty)

Alokuje blok paměti a vynuluje jej.

Clear

Clear [, , zásobník]

Vynuluje paměť proměnných a volitelně nastaví velikost zásobníku.

Deallocate

Deallocate(ukazatel)

Uvolní paměť alokovanou pomocí Allocate/CAllocate/Reallocate.

Field

Field #kanál, délka As proměnná [, ...]

Namapuje proměnné na části záznamu v souboru s náhodným přístupem.

Fre

Fre[(dummy)]

Vrátí množství dostupné volné paměti (historická funkce).

Peek

Peek([typ,] adresa)

Přečte hodnotu ze zadané paměťové adresy.

Poke

Poke [typ,] adresa, hodnota

Zapíše hodnotu na zadanou paměťovou adresu.

Reallocate

Reallocate(ukazatel, nové_bajty)

Změní velikost dříve alokovaného bloku paměti.

Meta příkazy (4 klíčových slov)

$Dynamic

'$Dynamic

Meta-direktiva nastavující dynamické (haldové) pole jako výchozí.

$Include

'$Include: 'soubor'

Vloží obsah jiného zdrojového souboru (starší styl, ekvivalent #include).

$Lang

'$Lang: "dialekt"

Meta-direktiva nastavující jazykový dialekt (fb/qb/fblite/deprecated) v souboru.

$Static

'$Static

Meta-direktiva nastavující statické pole jako výchozí.

Různé (14 klíčových slov)

Asm

Asm ... End Asm

Vloží blok inline assembleru přímo do zdrojového kódu.

Data

Data hodnota [, hodnota ...]

Definuje statická data čtená pomocí příkazu Read.

End (Block)

End Type / End Sub / End If ...

Ukončuje blokovou konstrukci (Type, Sub, Function, If, Select apod.).

Is (Run-Time Type Information Operator)

objekt Is typ

Ověří za běhu, zda je objekt daného typu (RTTI).

Let

Let proměnná = výraz

Historické klíčové slovo pro přiřazení (viz operátor =).

OffsetOf

OffsetOf(typ, člen)

Vrátí offset (posun v bajtech) člena uvnitř struktury Type.

Option()

Option(příznak)

Zjistí, zda je za běhu nastavena určitá compile-time volba.

Read

Read proměnná [, ...]

Načte další hodnotu(y) z bloku Data do proměnných.

Rem

Rem komentář  '  komentář

Uvozuje jednořádkový komentář (alternativa k apostrofu).

Restore

Restore [návěští]

Nastaví, od kterého bloku Data se bude příště číst pomocí Read.

SizeOf

SizeOf(typ/proměnná)

Vrátí velikost typu nebo proměnné v bajtech.

Swap

Swap proměnná1, proměnná2

Prohodí hodnoty dvou proměnných stejného typu.

To

For i = 1 To 10 / Select Case 1 To 5

Odděluje meze rozsahu v cyklu For nebo v Case.

TypeOf

TypeOf(proměnná)

Vrátí identifikátor datového typu proměnné (podobně jako typeid).

Modularizace (jmenné prostory, sdílené knihovny) (12 klíčových slov)

Common

Common [Shared] proměnná As typ

Deklaruje proměnnou sdílenou mezi moduly (starší mechanismus).

DyLibFree

DyLibFree(knihovna)

Uvolní dynamicky načtenou knihovnu (DLL/.so) otevřenou pomocí DyLibLoad.

DyLibLoad

DyLibLoad("jméno")

Za běhu načte dynamickou knihovnu a vrátí na ni handle.

DyLibSymbol

DyLibSymbol(knihovna, "symbol")

Vrátí adresu funkce/symbolu v dynamicky načtené knihovně.

Export

Sub/Function ... Export

Označí proceduru jako exportovanou z DLL pro externí použití.

Extern

Extern "C" jméno As typ

Deklaruje externí symbol definovaný jinde (jiný soubor/jazyk).

Extern...End Extern

Extern "C" ... End Extern

Blok deklarující více externích symbolů se společnou linkovací konvencí.

Import

'$Import knihovna nebo Extern Import

Naznačí, že symbol se importuje z externí knihovny/DLL.

Namespace

Namespace jméno ... End Namespace

Seskupí deklarace do pojmenovaného prostoru zabraňujícího kolizím jmen.

Private

Private proměnná/procedura

Omezí viditelnost symbolu na aktuální modul.

Public

Public proměnná/procedura

Zpřístupní symbol i mimo aktuální modul (výchozí chování).

Using (Namespaces)

Using jmenný_prostor

Zpřístupní obsah jmenného prostoru bez nutnosti plně kvalifikovaného jména.

Vícevláknové programování (13 klíčových slov)

CondBroadcast

CondBroadcast(podmínka)

Probudí všechna vlákna čekající na podmínkovou proměnnou.

CondCreate

CondCreate

Vytvoří novou podmínkovou proměnnou (condition variable) pro synchronizaci vláken.

CondDestroy

CondDestroy(podmínka)

Zruší podmínkovou proměnnou a uvolní její prostředky.

CondSignal

CondSignal(podmínka)

Probudí jedno vlákno čekající na podmínkovou proměnnou.

CondWait

CondWait(podmínka, mutex)

Uspí vlákno, dokud nebude podmínka signalizována; atomicky uvolní mutex.

MutexCreate

MutexCreate

Vytvoří nový mutex pro vzájemné vyloučení přístupu vláken.

MutexDestroy

MutexDestroy(mutex)

Zruší mutex a uvolní jeho prostředky.

MutexLock

MutexLock(mutex)

Uzamkne mutex; čeká, pokud je již uzamčen jiným vláknem.

MutexUnlock

MutexUnlock(mutex)

Odemkne dříve uzamčený mutex.

Threadcall

ThreadCall jméno_procedury(args)

Zkrácený zápis pro vytvoření vlákna volajícího proceduru.

ThreadCreate

ThreadCreate(@procedura[, param])

Vytvoří a spustí nové vlákno spouštějící zadanou proceduru.

Threaddetach

ThreadDetach(vlákno)

Odpojí vlákno — uvolní jeho prostředky bez čekání pomocí ThreadWait.

ThreadWait

ThreadWait(vlákno)

Počká na dokončení vlákna a uvolní jeho prostředky.

Operační systém a shell (24 klíčových slov)

Chain

Chain "program"

Ukončí aktuální program a spustí jiný spustitelný soubor.

ChDir

ChDir cesta

Změní aktuální pracovní adresář.

Command

Command[(n)]

Vrátí argumenty příkazové řádky předané programu.

CurDir

CurDir[(disk)]

Vrátí aktuální pracovní adresář jako řetězec.

Dir

Dir[(vzor[, atributy])]

Vyhledá soubory podle vzoru; opakovaným voláním bez parametru vrací další nalezené.

End (Statement)

End [kód]

Okamžitě ukončí program, volitelně s návratovým kódem.

Environ

Environ(jméno/index)

Vrátí hodnotu proměnné prostředí operačního systému.

Exec

Exec("program", "parametry")

Spustí externí program a vrátí handle k jeho vstupu/výstupu.

ExePath

ExePath

Vrátí cestu k adresáři, ve kterém se nachází spuštěný program.

FileAttr

FileAttr(kanál, typ)

Vrátí informace o režimu otevření souborového kanálu.

FileCopy

FileCopy zdroj, cíl

Zkopíruje soubor ze zdrojové cesty na cílovou.

FileDateTime

FileDateTime(jméno)

Vrátí datum a čas poslední změny souboru.

FileExists

FileExists(jméno)

Vrátí True, pokud zadaný soubor/adresář existuje.

FileLen

FileLen(jméno)

Vrátí velikost souboru v bajtech.

Isredirected

IsRedirected(kanál)

Vrátí True, pokud je standardní vstup/výstup přesměrován.

Kill

Kill jméno

Smaže zadaný soubor.

MkDir

MkDir cesta

Vytvoří nový adresář.

Name

Name staré_jméno As nové_jméno

Přejmenuje nebo přesune soubor.

RmDir

RmDir cesta

Smaže (prázdný) adresář.

Run

Run "program"

Spustí externí program (varianta pro DOS).

SetEnviron

SetEnviron("jméno=hodnota")

Nastaví hodnotu proměnné prostředí pro aktuální proces.

Shell

Shell ["příkaz"]

Spustí příkaz v systémovém shellu a čeká na jeho dokončení.

System

System [kód]

Ukončí program a vrátí řízení operačnímu systému (alias End).

WindowTitle

WindowTitle "text"

Nastaví titulek okna konzole/grafického okna.

Ukazatele (6 klíčových slov)

Pointer

Dim x As typ Ptr

Obecné označení pro datový typ ukazatele na jiný typ.

ProcPtr

Dim p As Function(...) As typ

Ukazatel na proceduru (funkci/sub), umožňující volání přes proměnnou.

Ptr

typ Ptr

Modifikátor typu vytvářející ukazatel na daný typ.

SAdd

SAdd(řetězec)

Vrátí adresu datového bufferu dynamického řetězce.

StrPtr

StrPtr(řetězec)

Vrátí ukazatel (adresu) na data řetězce jako ZString Ptr.

VarPtr

VarPtr(proměnná)

Vrátí adresu (ukazatel) na proměnnou.

Předdefinované symboly (48 klíčových slov)

__DATE__

__DATE__

Textový literál s datem kompilace ve formátu MM/DD/YYYY.

__Date_Iso__

__DATE_ISO__

Textový literál s datem kompilace ve formátu ISO YYYY-MM-DD.

__Fb_64Bit__

__FB_64BIT__

Definováno, pokud je cíl kompilace 64bitový.

__FB_ARGC__

__FB_ARGC__

Počet argumentů příkazové řádky (v kontextu makra/preprocesoru).

__FB_ARGV__

__FB_ARGV__

Pole argumentů příkazové řádky (v kontextu preprocesoru).

__Fb_Arm__

__FB_ARM__

Definováno při kompilaci pro architekturu ARM.

__FB_BIGENDIAN__

__FB_BIGENDIAN__

Definováno, pokud je cílová architektura big-endian.

__FB_BUILD_DATE__

__FB_BUILD_DATE__

Datum sestavení použitého kompilátoru FreeBASIC.

__FB_CYGWIN__

__FB_CYGWIN__

Definováno při kompilaci pod Cygwin.

__FB_DARWIN__

__FB_DARWIN__

Definováno při kompilaci pro macOS (Darwin).

__FB_DEBUG__

__FB_DEBUG__

Definováno, pokud byl program zkompilován s přepínačem -g (debug).

__FB_DOS__

__FB_DOS__

Definováno při kompilaci pro cíl DOS.

__FB_ERR__

__FB_ERR__

Kód poslední chyby preprocesoru/kompilace.

__FB_FREEBSD__

__FB_FREEBSD__

Definováno při kompilaci pro FreeBSD.

__FB_LANG__

__FB_LANG__

Textový řetězec aktuálního jazykového dialektu (fb/qb/fblite/deprecated).

__FB_LINUX__

__FB_LINUX__

Definováno při kompilaci pro Linux.

__FB_MAIN__

__FB_MAIN__

Definováno v hlavním (kompilovaném) zdrojovém souboru.

__FB_MIN_VERSION__

__FB_MIN_VERSION__(major,minor,patch)

Makro pro test minimální požadované verze kompilátoru.

__FB_MT__

__FB_MT__

Definováno, pokud je program kompilován s podporou vícevláknového běhu (-mt).

__FB_NETBSD__

__FB_NETBSD__

Definováno při kompilaci pro NetBSD.

__FB_OPENBSD__

__FB_OPENBSD__

Definováno při kompilaci pro OpenBSD.

__FB_OPTION_BYVAL__

__FB_OPTION_BYVAL__

Definováno, pokud je aktivní Option ByVal.

__FB_OPTION_DYNAMIC__

__FB_OPTION_DYNAMIC__

Definováno, pokud je aktivní Option Dynamic.

__FB_OPTION_ESCAPE__

__FB_OPTION_ESCAPE__

Definováno, pokud je aktivní Option Escape.

__FB_OPTION_EXPLICIT__

__FB_OPTION_EXPLICIT__

Definováno, pokud je aktivní Option Explicit.

__Fb_Option_Gosub__

__FB_OPTION_GOSUB__

Definováno, pokud je aktivní Option Gosub.

__FB_OPTION_PRIVATE__

__FB_OPTION_PRIVATE__

Definováno, pokud je aktivní Option Private.

__FB_OUT_DLL__

__FB_OUT_DLL__

Definováno, pokud se výstup kompiluje jako DLL/sdílená knihovna.

__FB_OUT_EXE__

__FB_OUT_EXE__

Definováno, pokud se výstup kompiluje jako spustitelný soubor.

__FB_OUT_LIB__

__FB_OUT_LIB__

Definováno, pokud se výstup kompiluje jako statická knihovna.

__FB_OUT_OBJ__

__FB_OUT_OBJ__

Definováno, pokud se generuje pouze objektový soubor.

__FB_SIGNATURE__

__FB_SIGNATURE__

Interní signatura identifikující kompilátor FreeBASIC.

__FB_SSE__

__FB_SSE__

Definováno, pokud kompilátor používá instrukce SSE pro desetinná čísla.

__FB_VER_MAJOR__

__FB_VER_MAJOR__

Hlavní číslo verze kompilátoru.

__FB_VER_MINOR__

__FB_VER_MINOR__

Vedlejší číslo verze kompilátoru.

__FB_VER_PATCH__

__FB_VER_PATCH__

Číslo opravné verze (patch) kompilátoru.

__FB_VERSION__

__FB_VERSION__

Textový řetězec s celou verzí kompilátoru, např. "1.0.1".

__FB_WIN32__

__FB_WIN32__

Definováno při kompilaci pro Windows.

__FB_XBOX__

__FB_XBOX__

Definováno při kompilaci pro platformu Xbox.

__FILE__

__FILE__

Textový literál s úplnou cestou aktuálního zdrojového souboru.

__FILE_NQ__

__FILE_NQ__

Jako __FILE__, ale bez uvozovek kolem hodnoty.

__FUNCTION__

__FUNCTION__

Textový literál se jménem aktuální procedury.

__FUNCTION_NQ__

__FUNCTION_NQ__

Jako __FUNCTION__, ale bez uvozovek kolem hodnoty.

__LINE__

__LINE__

Číslo aktuálního řádku zdrojového kódu.

__PATH__

__PATH__

Cesta k adresáři aktuálního zdrojového souboru.

__TIME__

__TIME__

Textový literál s časem kompilace ve formátu HH:MM:SS.

False

False

Předdefinovaná konstanta logické nepravdy (hodnota 0).

True

True

Předdefinovaná konstanta logické pravdy (hodnota -1).

Preprocesor (21 klíčových slov)

#Assert

#Assert výraz

Vyhodnotí výraz při kompilaci; pokud je nepravdivý, kompilace selže s chybou.

#define

#define jméno [(params)] [text]

Definuje makro nebo konstantu pro preprocesor.

#else

#else

Alternativní větev podmíněné kompilace #if/#ifdef.

#elseif

#elseif výraz

Další podmínka v řetězci podmíněné kompilace.

#endif

#endif

Ukončuje blok podmíněné kompilace #if/#ifdef.

#endmacro

#endmacro

Ukončuje víceřádkovou definici #macro.

#error

#error "zpráva"

Vyvolá chybu kompilace se zadanou zprávou.

#if

#if výraz ... #endif

Podmíněná kompilace bloku kódu na základě výrazu vyhodnoceného při kompilaci.

#ifdef

#ifdef symbol

Kompiluje následující blok, pokud je symbol definován.

#ifndef

#ifndef symbol

Kompiluje následující blok, pokud symbol není definován.

#inclib

#inclib "knihovna"

Přidá knihovnu k seznamu knihoven pro linker.

#include

#include "soubor" / #include Once "soubor"

Vloží obsah jiného zdrojového nebo hlavičkového souboru.

#lang

#lang "dialekt"

Nastaví jazykový dialekt (fb/qb/fblite/deprecated) preprocesorově.

#libpath

#libpath "cesta"

Přidá cestu k adresáři s knihovnami pro linker.

#line

#line číslo ["soubor"]

Změní číslo řádku/jméno souboru hlášené kompilátorem (pro generovaný kód).

#macro

#macro jméno(params) ... #endmacro

Definuje víceřádkové makro.

#pragma

#pragma příkaz

Předá kompilátoru speciální direktivu (např. pragma pack).

#print

#print text

Vypíše text do konzole během kompilace (ladicí výstup preprocesoru).

#undef

#undef jméno

Zruší dříve definované makro.

defined

defined(symbol)

Vrátí True/False, zda je symbol definován (pro použití v #if).

Once

#include Once "soubor"

Zajistí, že se soubor vloží jen jednou i při vícenásobném #include.

Procedury (38 klíčových slov)

...

Sub jméno(... As Any Ptr)

Označuje proceduru s proměnným počtem argumentů (varargs).

Abstract (Member)

Abstract Sub/Function ...

Označí členskou metodu jako abstraktní — musí být implementována v potomkovi.

Alias

Declare Sub jméno Lib "lib" Alias "skutečné_jméno"

Určuje skutečné jméno symbolu v externí knihovně.

Any

ByVal x As Any Ptr

Obecný (netypovaný) ukazatel, kompatibilní s libovolným typem ukazatele.

Base (Initialization)

Constructor(...) : Base(...)

Explicitně zavolá konstruktor základní třídy s danými argumenty.

Base (Member Access)

Base.člen

Přistoupí k členu základní (rodičovské) třídy z odvozeného typu.

Byref (Function Results)

Function jméno() ByRef As typ

Funkce vrací hodnotu odkazem místo kopií.

Byref (Parameters)

Sub jméno(ByRef param As typ)

Parametr je předán odkazem — procedura pracuje přímo s originální proměnnou.

ByVal

Sub jméno(ByVal param As typ)

Parametr je předán hodnotou — procedura pracuje s kopií.

Call

Call jméno(args) / jméno args

Explicitně zavolá proceduru (nepovinné klíčové slovo).

cdecl

Declare Sub jméno CDecl(...)

Nastaví volací konvenci jazyka C pro deklarovanou proceduru.

Const (Member)

Sub jméno() Const

Označí členskou metodu jako neměnící stav instance (const metoda).

Constructor

Constructor([params])

Speciální metoda volaná automaticky při vytváření instance typu.

Constructor (Module)

Constructor jméno

Procedura spuštěná automaticky před Main() při startu programu.

Declare

Declare Sub/Function jméno(...) [Lib "lib"]

Deklaruje prototyp procedury (interní nebo externí).

Destructor

Destructor

Speciální metoda volaná automaticky při zániku instance typu.

Destructor (Module)

Destructor jméno

Procedura spuštěná automaticky po ukončení programu.

Function

Function jméno(params) As typ ... End Function

Definuje proceduru vracející hodnotu daného typu.

Function (Member)

Function jméno(params) As typ ... End Function

Metoda typu/třídy vracející hodnotu.

Lib

Declare Sub jméno Lib "knihovna"

Určuje knihovnu, ve které se hledá externí symbol procedury.

Naked

Sub jméno() Naked

Procedura bez automaticky generovaného prologu/epilogu (pro ruční assembler).

Operator

Operator +(...) As typ ... End Operator

Definuje přetížený operátor pro uživatelský typ.

Overload

Sub/Function jméno(...) Overload

Umožní definovat více procedur se stejným jménem a různými parametry.

Override

Sub jméno(...) Override

Přepíše virtuální metodu zděděnou od základní třídy.

pascal

Declare Sub jméno Pascal(...)

Nastaví Pascal volací konvenci pro deklarovanou proceduru.

Private (Member)

Private: ...

Omezí viditelnost následujících členů typu jen na tento typ.

Property

Property jméno(...) As typ ... End Property

Definuje metodu přístupnou syntakticky jako proměnná (getter/setter).

Protected (Member)

Protected: ...

Zpřístupní následující členy typu jen jemu a jeho potomkům.

Public (Member)

Public: ...

Zpřístupní následující členy typu odkudkoli (výchozí viditelnost).

Static (Member)

Static proměnná As typ

Člen typu sdílený všemi instancemi (třídní proměnná/metoda).

stdcall

Declare Sub jméno StdCall(...)

Nastaví stdcall volací konvenci (typicky pro Windows API).

Sub

Sub jméno(params) ... End Sub

Definuje proceduru, která nevrací hodnotu.

Sub (Member)

Sub jméno(params) ... End Sub

Metoda typu/třídy, která nevrací hodnotu.

This

This

Uvnitř metody odkazuje na ukazatel na aktuální instanci objektu.

va_arg

va_arg(ukazatel, typ)

Přečte další argument z proměnného seznamu argumentů (varargs).

va_first

va_first()

Vrátí ukazatel na první argument proměnného seznamu argumentů.

va_next

va_next(ukazatel, typ)

Posune ukazatel na další argument v proměnném seznamu argumentů.

Virtual (Member)

Virtual Sub/Function ...

Označí metodu jako virtuální, umožňující její přepsání (Override) v potomcích.

Řízení běhu programu (28 klíčových slov)

Case

Case výraz[, výraz2...] / Case Is op výraz / Case v1 To v2

Definuje jednu větev konstrukce Select Case.

Continue

Continue [For|Do|While]

Přeskočí na další iteraci nejbližšího (nebo zadaného) cyklu.

Do

Do [{While|Until} podmínka]

Zahajuje cyklus Do...Loop s volitelnou podmínkou na začátku.

Do...Loop

Do ... Loop [{While|Until} podmínka]

Cyklus opakující blok kódu, dokud/pokud platí podmínka.

Else

Else

Alternativní větev konstrukce If...Then nebo Select Case (Case Else).

ElseIf

ElseIf podmínka Then

Další podmíněná větev uvnitř bloku If...Then.

End If

End If

Ukončuje víceřádkový blok If...Then.

Exit

Exit For|Do|Sub|Function|...

Okamžitě opustí zadanou blokovou konstrukci nebo proceduru.

For

For proměnná = start To konec [Step krok]

Zahajuje cyklus For...Next s počítanou proměnnou.

For...Next

For ... Next [proměnná]

Cyklus opakující blok kódu pro zadaný rozsah hodnot proměnné.

GoSub

GoSub návěští

Skočí na podprogram označený návěštím a vrátí se po Return (zastaralé).

Goto

Goto návěští

Nepodmíněný skok na řádek označený návěštím.

If...Then

If podmínka Then ... [Else ...] [End If]

Podmíněně provede blok kódu podle vyhodnocení výrazu.

IIf

IIf(podmínka, hodnota_true, hodnota_false)

Vrátí jednu ze dvou hodnot podle podmínky (vyhodnotí oba výrazy).

Is (Select Case)

Case Is op výraz

Umožní v Case porovnávat pomocí relačního operátoru vůči testované hodnotě.

Loop

Loop [{While|Until} podmínka]

Ukončuje cyklus Do, volitelně s podmínkou na konci.

Next

Next [proměnná]

Ukončuje cyklus For a posune řídicí proměnnou o krok.

On...Gosub

On výraz GoSub návěští1, návěští2, ...

Skočí do jednoho z podprogramů podle hodnoty výrazu (zastaralé).

On...Goto

On výraz Goto návěští1, návěští2, ...

Skočí na jedno z návěští podle hodnoty výrazu (zastaralé).

Return

Return [výraz]

Návrat z GoSub, nebo (s výrazem) návrat hodnoty z Function.

Select Case

Select Case výraz ... End Select

Vícenásobná podmínka porovnávající výraz se sadou hodnot/rozsahů.

Sleep

Sleep [ms] [, flag]

Pozastaví běh programu na daný počet milisekund nebo do stisku klávesy.

Step

For i = a To b Step krok

Určuje velikost kroku v cyklu For.

Then

If podmínka Then

Uvozuje blok/příkaz vykonaný při splnění podmínky If.

Until

Do ... Loop Until podmínka

Opakuje cyklus, dokud se podmínka nestane pravdivou.

Wend

Wend

Ukončuje cyklus While...Wend.

While

While podmínka ... Wend

Zahajuje cyklus opakovaný, dokud platí podmínka.

While...Wend

While podmínka ... Wend

Cyklus s podmínkou testovanou na začátku každé iterace.

Řetězcové funkce (18 klíčových slov)

InStr

InStr([start,] řetězec, hledaný)

Vrátí pozici prvního výskytu podřetězce, 0 pokud nenalezeno.

InStrRev

InStrRev(řetězec, hledaný[, start])

Vrátí pozici posledního výskytu podřetězce (hledá od konce).

LCase

LCase(řetězec)

Převede všechna písmena řetězce na malá.

Left

Left(řetězec, počet)

Vrátí zadaný počet znaků od začátku řetězce.

Len

Len(řetězec/proměnná)

Vrátí délku řetězce ve znacích nebo velikost proměnné v bajtech.

LSet

LSet proměnná = řetězec

Zarovná řetězec doleva v poli pevné délky (doplní mezerami zprava).

LTrim

LTrim(řetězec[, znaky])

Odstraní úvodní mezery (nebo zadané znaky) z řetězce.

Mid (Function)

Mid(řetězec, start[, délka])

Vrátí podřetězec počínaje pozicí start o zadané délce.

Mid (Statement)

Mid(proměnná, start[, délka]) = řetězec

Nahradí část existujícího řetězce novým obsahem na místě.

Right

Right(řetězec, počet)

Vrátí zadaný počet znaků od konce řetězce.

RSet

RSet proměnná = řetězec

Zarovná řetězec doprava v poli pevné délky (doplní mezerami zleva).

RTrim

RTrim(řetězec[, znaky])

Odstraní koncové mezery (nebo zadané znaky) z řetězce.

Space

Space(počet)

Vrátí řetězec složený ze zadaného počtu mezer.

String (Function)

String(počet, znak)

Vrátí řetězec vytvořený opakováním zadaného znaku.

Trim

Trim(řetězec[, znaky])

Odstraní úvodní i koncové mezery (nebo zadané znaky).

UCase

UCase(řetězec)

Převede všechna písmena řetězce na velká.

WSpace

WSpace(počet)

Vrátí WString složený ze zadaného počtu mezer (široké znaky).

Wstring (Function)

WString(počet, znak)

Vrátí WString vytvořený opakováním zadaného širokého znaku.

Převody řetězec/číslo (29 klíčových slov)

Asc

Asc(řetězec[, pozice])

Vrátí kód (ordinální hodnotu) znaku na dané pozici řetězce.

Bin

Bin(číslo[, délka])

Převede číslo na řetězec v binární (dvojkové) soustavě.

Chr

Chr(kód[, ...])

Vrátí znak odpovídající zadanému znakovému kódu.

CVD

CVD(řetězec)

Převede 8bajtový řetězec na hodnotu typu Double (opak MKD).

CVI

CVI(řetězec)

Převede 2bajtový řetězec na hodnotu typu Integer/Short (opak MKI).

CVL

CVL(řetězec)

Převede 4bajtový řetězec na hodnotu typu Long (opak MKL).

CVLongInt

CVLongInt(řetězec)

Převede 8bajtový řetězec na hodnotu typu LongInt (opak MKLongInt).

CVS

CVS(řetězec)

Převede 4bajtový řetězec na hodnotu typu Single (opak MKS).

CVShort

CVShort(řetězec)

Převede 2bajtový řetězec na hodnotu typu Short (opak MKShort).

Format

Format(číslo[, formát])

Naformátuje číslo do řetězce podle zadané formátovací masky.

Hex

Hex(číslo[, délka])

Převede číslo na řetězec v šestnáctkové soustavě.

MKD

MKD(hodnota As Double)

Převede hodnotu Double na 8bajtový řetězec (pro binární zápis do souboru).

MKI

MKI(hodnota)

Převede celočíselnou hodnotu na 2bajtový řetězec.

MKL

MKL(hodnota As Long)

Převede hodnotu Long na 4bajtový řetězec.

MKLongInt

MKLongInt(hodnota As LongInt)

Převede hodnotu LongInt na 8bajtový řetězec.

MKS

MKS(hodnota As Single)

Převede hodnotu Single na 4bajtový řetězec.

MKShort

MKShort(hodnota As Short)

Převede hodnotu Short na 2bajtový řetězec.

Oct

Oct(číslo[, délka])

Převede číslo na řetězec v osmičkové soustavě.

Str

Str(číslo)

Převede číselnou hodnotu na její textovou reprezentaci.

Val

Val(řetězec)

Převede textovou reprezentaci čísla na hodnotu Double.

ValInt

ValInt(řetězec)

Převede řetězec na hodnotu typu Integer.

ValLng

ValLng(řetězec)

Převede řetězec na hodnotu typu Long.

ValUInt

ValUInt(řetězec)

Převede řetězec na hodnotu typu UInteger.

ValULng

ValULng(řetězec)

Převede řetězec na hodnotu typu ULong.

WBin

WBin(číslo[, délka])

Jako Bin, ale vrací WString (široké znaky).

WChr

WChr(kód[, ...])

Jako Chr, ale vrací WString (široké znaky).

WHex

WHex(číslo[, délka])

Jako Hex, ale vrací WString (široké znaky).

WOct

WOct(číslo[, délka])

Jako Oct, ale vrací WString (široké znaky).

WStr

WStr(číslo)

Jako Str, ale vrací WString (široké znaky).

Přetypování (Type casting) (17 klíčových slov)

Cast

Cast(typ, výraz)

Explicitně přetypuje výraz na zadaný typ (bez kontroly).

Cbool

CBool(výraz)

Převede výraz na hodnotu typu Boolean.

CByte

CByte(výraz)

Převede výraz na hodnotu typu Byte.

CDbl

CDbl(výraz)

Převede výraz na hodnotu typu Double.

CInt

CInt(výraz)

Převede výraz na hodnotu typu Integer.

CLng

CLng(výraz)

Převede výraz na hodnotu typu Long.

CLngInt

CLngInt(výraz)

Převede výraz na hodnotu typu LongInt.

CPtr

CPtr(typ Ptr, výraz)

Přetypuje výraz na ukazatel zadaného typu.

CShort

CShort(výraz)

Převede výraz na hodnotu typu Short.

CSign

CSign(výraz)

Převede výraz na odpovídající znaménkový (signed) typ.

CSng

CSng(výraz)

Převede výraz na hodnotu typu Single.

CUByte

CUByte(výraz)

Převede výraz na hodnotu typu UByte.

CUInt

CUInt(výraz)

Převede výraz na hodnotu typu UInteger.

CULng

CULng(výraz)

Převede výraz na hodnotu typu ULong.

CULngInt

CULngInt(výraz)

Převede výraz na hodnotu typu ULongInt.

CUnsg

CUnsg(výraz)

Převede výraz na odpovídající bezznaménkový (unsigned) typ.

CUShort

CUShort(výraz)

Převede výraz na hodnotu typu UShort.

Uživatelský vstup (12 klíčových slov)

GetJoystick

GetJoystick(joy, tlačítko, x, y, ...)

Přečte stav zadaného joysticku (osy, tlačítka).

GetKey

GetKey

Počká na stisk klávesy a vrátí její kód (blokující varianta Inkey).

GetMouse

GetMouse(x, y[, kolečko][, tlačítka])

Zjistí aktuální polohu a stav tlačítek myši v grafickém okně.

Inkey

Inkey

Vrátí stisknutou klávesu jako řetězec, nebo prázdný řetězec pokud žádná nečeká.

Input

Input(počet[, #kanál])

Přečte zadaný počet znaků ze vstupu/souboru bez čekání na Enter.

Input (Statement)

Input ["výzva";] proměnná[, ...]

Vyzve uživatele a načte hodnoty zadané z klávesnice.

Line Input

Line Input ["výzva";] řetězec

Načte celý řádek textu zadaný uživatelem do proměnné.

MultiKey

MultiKey(scan_kód)

Zjistí, zda je právě stisknuta klávesa se zadaným scan kódem (bez bufferování).

SetMouse

SetMouse [x, y][, viditelnost][, klip]

Nastaví polohu kurzoru myši a jeho viditelnost.

Stick

Stick(osa)

Vrátí hodnotu zadané osy joysticku (starší rozhraní).

Strig

Strig(tlačítko)

Vrátí stav zadaného tlačítka joysticku (starší rozhraní).

WInput

WInput ["výzva";] wřetězec

Jako Input, ale pro WString (široké znaky).