FreeBASIC Einsteigerhandbuch
Inhaltsverzeichnis
  - Einleitung
 
  
    - 1 Über das Buch
 
    - 2 In diesem Buch verwendete Konventionen
 
    - 3 Rechtliches
 
    - 4 Weitere Informationen
 
    - 5 Danksagung
 
  
TEIL 1: Einführung
  - 1. Eine kurze Einführung in FreeBASIC
 
  
    - 1.1 Was ist eine Programmiersprache?
 
    - 1.2 Was ist FreeBASIC?
 
    - 1.3 Unterschiede zu QuickBASIC
 
    - 1.4 Vor- und Nachteile von FreeBASIC
 
  
  - 2. Installation und Inbetriebnahme
 
  
    - 2.1 Installation
 
    
      - 2.1.1 Installation unter Windows
 
      
        - 2.1.1.1 Komplettpaket
 
        - 2.1.1.2 Getrennte Installation
 
      
      - 2.1.2 Installation unter Linux
 
    
    - 2.2 Erstes Programm
 
    - 2.3 Problembehebung
 
    
      - 2.3.1 Probleme beim Start
 
      - 2.3.2 Probleme beim Compilieren
 
    
    - 2.4 Wie wird aus meinem Quelltext ein Programm?
 
  
TEIL 2: Grundkonzepte
  - 3. Aufbau eines FreeBASIC-Programmes
 
  
    - 3.1 Grundaufbau und Ablauf
 
    - 3.2 Kommentare
 
    - 3.3 Zeilenfortsetzungszeichen
 
    - 3.4 Trennung von Befehlen mit Doppelpunkt
 
  
  - 4. Bildschirmausgabe
 
  
    - 4.1 Der PRINT-Befehl
 
    - 4.2 Ausgabe von Variablen
 
    
      - 4.2.1 Deklaration von Variablen
 
      - 4.2.2 Wertzuweisung
 
      - 4.2.3 Wertvertauschung
 
      - 4.2.4 Ausgabe des Variablenwertes
 
    
    - 4.3 Formatierung der Ausgabe
 
    
      - 4.3.1 Direkte Positionierung mit LOCATE
 
      - 4.3.2 Positionierung mit TAB und SPC
 
      - 4.3.3 Cursor-Position ermitteln: POS und CSRLIN
 
      - 4.3.4 Farbige Ausgabe
 
      - 4.3.5 Bildschirm löschen mit CLS
 
    
    - 4.4 Fragen zum Kapitel
 
  
  - 5. Tastatureingabe
 
  
    - 5.1 Der INPUT-Befehl
 
    - 5.2 Eingabe einzelner Zeichen
 
    
      - 5.2.1 INPUT() als Funktion
 
      - 5.2.2 INKEY()
 
    
    - 5.3 Fragen zum Kapitel
 
  
  - 6. Variablen und Konstanten
 
  
    - 6.1 Ganzzahlen
 
    
      - 6.1.1 Verfügbare Ganzzahl-Datentypen
 
      - 6.1.2 Alternative Schreibweise: INTEGER
 
      - 6.1.3 Rechnen mit Ganzzahlen
 
      - 6.1.4 Kurzschreibweisen
 
    
    - 6.2 Gleitkommazahlen
 
    
      - 6.2.1 Darstellungsbereich von Gleitkommazahlen
 
      - 6.2.2 Rechengenauigkeit bei Gleitkommazahlen
 
    
    - 6.3 Zeichenketten
 
    
      - 6.3.1 Arten von Zeichenketten
 
      - 6.3.2 Aneinanderhängen zweier Zeichenketten
 
    
    - 6.4 Wahrheitswerte
 
    - 6.5 Konstanten
 
    - 6.6 Nummerierungen (Enumerations)
 
    - 6.7 Weitere Speicherstrukturen
 
    - 6.8 Fragen zum Kapitel
 
  
  - 7. Benutzerdefinierte Datentypen (UDTs)
 
  
    - 7.1 Deklaration
 
    - 7.2 Mitgliederzugriff mit WITH
 
    - 7.3 Speicherverwaltung
 
    - 7.4 Bitfelder
 
    - 7.5 UNIONs
 
    - 7.6 Fragen zum Kapitel
 
  
  - 8. Datenfelder (Arrays)
 
  
    - 8.1 Deklaration und Zugriff
 
    - 8.2 Mehrdimensionale Arrays
 
    - 8.3 Dynamische Arrays
 
    
      - 8.3.1 Deklaration und Redimensionierung
 
      - 8.3.2 Werte-Erhalt beim Redimensionieren
 
    
    - 8.4 Weitere Befehle
 
    
      - 8.4.1 Grenzen ermitteln: LBOUND() und UBOUND()
 
      - 8.4.2 Nur die Dimensionenzahl festlegen: ANY
 
      - 8.4.3 Implizite Grenzen
 
      - 8.4.4 Löschen mit ERASE
 
    
    - 8.5 Fragen zum Kapitel
 
  
  - 9. Pointer (Zeiger)
 
  
    - 9.1 Speicheradresse ermitteln
 
    - 9.2 Pointer deklarieren
 
    - 9.3 Speicherverwaltung bei Arrays
 
    - 9.4 Fragen zum Kapitel
 
  
  - 10. Bedingungen
 
  
    - 10.1 Einfache Auswahl: IF ... THEN
 
    
      - 10.1.1 Einzeilige Bedingungen
 
      - 10.1.2 Mehrzeilige Bedingungen (IF-Block)
 
      - 10.1.3 Alternativauswahl
 
    
    - 10.2 Bedingungsstrukturen
 
    
      - 10.2.1 Vergleiche
 
      - 10.2.2 Logische Operatoren
 
      - 10.2.3 Das Binärsystem
 
      - 10.2.4 AND und OR als Bit-Operatoren
 
      - 10.2.5 ANDALSO und ORELSE
 
      - 10.2.6 Weitere Bit-Operatoren: XOR, EQV, IMP und NOT
 
    
    - 10.3 Mehrfachauswahl: SELECT CASE
 
    
      - 10.3.1 Grundaufbau
 
      - 10.3.2 Erweiterte Möglichkeiten
 
      - 10.3.3 SELECT CASE AS CONST
 
    
    - 10.4 Bedingungsfunktion: IIF()
 
    - 10.5 Welche Möglichkeit ist die beste?
 
    - 10.6 Fragen zum Kapitel
 
  
  - 11. Schleifen und Kontrollanweisungen
 
  
    - 11.1 Sprunganweisungen
 
    - 11.2 DO ... LOOP
 
    - 11.3 WHILE ... WEND
 
    - 11.4 FOR ... NEXT
 
    
      - 11.4.1 Einfache FOR-Schleife
 
      - 11.4.2 FOR-Schleife mit angegebener Schrittweite
 
      - 11.4.3 FOR i AS datentyp
 
      - 11.4.4 Übersprungene Schleifen
 
      - 11.4.5 Fallstricke
 
      
        - 11.4.5.1 Gleitkomma-Schrittweite
 
        - 11.4.5.2 Überschreitung des Wertebereichs
 
      
    
    - 11.5 Kontrollanweisungen
 
    
      - 11.5.1 Fortfahren mit CONTINUE
 
      - 11.5.2 Vorzeitiges Verlassen mit EXIT
 
      - 11.5.3 Kontrollstrukturen in verschachtelten Blöcken
 
    
    - 11.6 Systemauslastung in Dauerschleifen
 
    - 11.7 Fragen zum Kapitel
 
  
  - 12. Prozeduren und Funktionen
 
  
    - 12.1 Einfache Prozeduren
 
    - 12.2 Verwaltung von Variablen
 
    
      - 12.2.1 Parameterübergabe
 
      - 12.2.2 Globale Variablen
 
      - 12.2.3 Statische Variablen
 
    
    - 12.3 Unterprogramme bekannt machen
 
    
      - 12.3.1 Die Deklarationszeile
 
      - 12.3.2 Optionale Parameter
 
      - 12.3.3 OVERLOAD
 
    
    - 12.4 Funktionen
 
    - 12.5 Weitere Eigenschaften der Parameter
 
    
      - 12.5.1 Übergabe von Arrays
 
      - 12.5.2 BYREF und BYVAL
 
      - 12.5.3 Parameterübergabe AS CONST
 
      - 12.5.4 Aufrufkonvention für die Parameter
 
      - 12.5.5 Variable Parameterlisten
 
      
        - 12.5.5.1 Abfrage variabler Parameterlisten
 
        - 12.5.5.2 Kopie erstellen
 
        - 12.5.5.3 Frühere Methoden
 
      
    
    - 12.6 Fragen zum Kapitel
 
  
TEIL 3: Datenverarbeitung
  - 13. Datentypen umwandeln
 
  
    - 13.1 Allgemeine Umwandlung: CAST()
 
    - 13.2 Umwandlung in einen String
 
    - 13.3 Implizite Umwandlung
 
    - 13.4 ASCII-Code
 
    
      - 13.4.1 Ursprung und Bedeutung des ASCII-Codes
 
      - 13.4.2 ASC() und CHR()
 
      - 13.4.3 Binäre Kopie erstellen
 
    
    - 13.5 Fragen zum Kapitel
 
  
  - 14. Verarbeitung von Zahlen
 
  
    - 14.1 Mathematische Funktionen
 
    
      - 14.1.1 Quadratwurzel, Absolutbetrag und Vorzeichen
 
      - 14.1.2 Winkelfunktionen
 
      - 14.1.3 Exponentialfunktion und Logarithmus
 
      - 14.1.4 Rundung
 
      - 14.1.5 Modulo-Berechnung
 
      - 14.1.6 Zufallszahlen
 
    
    - 14.2 Zahlensysteme
 
    
      - 14.2.1 Darstellung in Nicht-Dezimalsystemen
 
      - 14.2.2 BIN(), OCT() und HEX()
 
    
    - 14.3 Bit-Manipulationen
 
    
      - 14.3.1 Manipulation über Bitoperatoren
 
      - 14.3.2 Einzelne Bit lesen und setzen
 
      - 14.3.3 Vergleich
 
      - 14.3.4 LOBYTE() und seine Freunde
 
      - 14.3.5 Bit-Verschiebung
 
    
    - 14.4 Fragen zum Kapitel
 
  
  - 15. Stringmanipulation
 
  
    - 15.1 Speicherverwaltung
 
    
      - 15.1.1 Verwaltung eines ZSTRING
 
      - 15.1.2 Verwaltung eines WSTRING
 
      - 15.1.3 Verwaltung eines STRING
 
    
    - 15.2 Stringfunktionen
 
    
      - 15.2.1 LEN(): Länge eines Strings ermitteln
 
      - 15.2.2 Die Funktionen SPACE() und STRING()
 
      - 15.2.3 LEFT(), RIGHT() und MID()
 
      - 15.2.4 Zeichenketten modifizieren
 
      
        - 15.2.4.1 MID als Anweisung
 
        - 15.2.4.2 LSET und RSET
 
      
      - 15.2.5 Führende/angehängte Zeichen entfernen: LTRIM(), RTRIM() und TRIM()
 
      - 15.2.6 Umwandlung in Groß- bzw. Kleinbuchstaben: UCASE() und LCASE()
 
      - 15.2.7 Teilstring suchen: INSTR() und INSTRREV()
 
    
    - 15.3 Umlaute und andere Sonderbuchstaben
 
    
      - 15.3.1 Problemstellung: Darstellung von Sonderzeichen
 
      - 15.3.2 Erster Lösungsversuch: Speicherformat anpassen
 
      - 15.3.3 Zweiter Lösungsversuch: Sonderzeichen als Konstanten
 
    
    - 15.4 Escape-Sequenzen
 
    - 15.5 Fragen zum Kapitel
 
  
  - 16. Datei-Zugriff
 
  
    - 16.1 Datei öffnen und schließen
 
    
      - 16.1.1 Dateinummer festlegen
 
      - 16.1.2 Der Dateimodus
 
      
        - 16.1.2.1 Sequentieller Zugriff
 
        - 16.1.2.2 Random-Access und BINARY
 
        - 16.1.2.3 Vergleich der Dateimodi
 
      
      - 16.1.3 Zugriffsart beschränken
 
      - 16.1.4 Datei für andere Programme sperren
 
      - 16.1.5 Text-Encoding
 
      - 16.1.6 Datei(en) schließen
 
    
    - 16.2 Lesen und Schreiben sequentieller Daten
 
    
      - 16.2.1 PRINT# und WRITE#
 
      - 16.2.2 INPUT#, LINE INPUT#
 
      - 16.2.3 INPUT() und WINPUT() für Dateien
 
    
    - 16.3 Zugriff auf binäre Daten
 
    
      - 16.3.1 Binäre Daten speichern
 
      - 16.3.2 Binäre Daten einlesen
 
      - 16.3.3 Binäre Speicherung von Strings variabler Länge
 
      - 16.3.4 Position des Dateizeigers
 
    
    - 16.4 Dateiende ermitteln
 
    
      - 16.4.1 End Of File (EOF)
 
      - 16.4.2 Length Of File (LOF)
 
    
    - 16.5 Datei löschen
 
    - 16.6 Standard-Datenströme
 
    
      - 16.6.1 Eine kurze Einführung
 
      - 16.6.2 Öffnen und Schließen eines Standard-Datenstroms
 
      - 16.6.3 OPEN PIPE
 
    
    - 16.7 Hardware-Zugriffe: OPEN COM und OPEN LPT
 
    - 16.8 Fragen zum Kapitel
 
  
  - 17. Betriebssystem-Anweisungen
 
  
    - 17.1 Ordnerfunktionen
 
    
      - 17.1.1 Kurze Einführung in das Ordnersystem
 
      
        - 17.1.1.1 Absolute Pfadangaben
 
        - 17.1.1.2 Relative Pfadangaben
 
      
      - 17.1.2 Arbeitsverzeichnis anzeigen und wechseln: CURDIR() und CHDIR()
 
      - 17.1.3 Programmpfad anzeigen: EXEPATH()
 
      - 17.1.4 Ordner anlegen und löschen: MKDIR() und RMDIR()
 
    
    - 17.2 Dateifunktionen
 
    
      - 17.2.1 Dateien umbenennen und verschieben: NAME()
 
      - 17.2.2 Dateien kopieren: FILECOPY()
 
      - 17.2.3 Dateiinformationen abrufen: FILEATTR(), FILELEN() und FILEDATETIME()
 
      - 17.2.4 Auf Existenz prüfen: FILEEXISTS()
 
      - 17.2.5 Dateien suchen: DIR()
 
    
    - 17.3 Externe Programme starten
 
    
      - 17.3.1 CHAIN(), EXEC() und RUN()
 
      - 17.3.2 SHELL()
 
    
    - 17.4 Kommandozeilenparameter auswerten
 
    - 17.5 Umgebungsvariablen abfragen und setzen
 
    - 17.6 Fragen zum Kapitel
 
  
  - 18. Datum und Zeit
 
  
    - 18.1 Zeitmessung
 
    
      - 18.1.1 SLEEP
 
      - 18.1.2 TIMER()
 
    
    - 18.2 Abruf und Änderung der Systemzeit
 
    - 18.3 Serial Numbers
 
    
      - 18.3.1 Aktuelles Datum mit NOW() und FORMAT
 
      - 18.3.2 Setzen einer _Serial Number_
 
      - 18.3.3 Teilinformationen einer _Serial Number_
 
      - 18.3.4 Namen des Wochentage und Monate
 
      - 18.3.5 Rechnen mit Datum und Zeit
 
    
    - 18.4 Fragen zum Kapitel
 
  
ANHANG
  - Anhang A: Antworten zu den Fragen
 
  - Anhang B: Compiler-Optionen
 
  
    - B.1 Grundlegende Compileroptionen
 
    - B.2 Dialekt wählen
 
    - B.3 Fehlerbehandlung einstellen
 
    - B.4 Unterdrüchung des Konsolenfensters
 
    - B.5 Weitere Optionsschalter
 
    - B.5.1 Erzeugung von Bibliotheken (Libraries) mit privaten/öffentlichen Prozeduren
 
    - B.5.2 Behandlung von Programmdateien (*.bas und *.bi)
 
    - B.5.3 Bedingtes Compilieren und Präprozessor
 
    - B.5.4 Fehlerbehandlung
 
    - B.5.5 Programmerstellung
 
    - B.5.6 Informationen
 
  
  - Anhang C: ASCII-Zeichentabelle
 
  - Anhang D: MULTIKEY-Scancodes
 
  - Anhang E: Konstanten und Funktionen der _vbcompat.bi_
 
  
    - E.1 Datum und Zeit
 
    - E.1.1 Verfügbare Funktionen
 
    - E.1.2 Definierte Konstanten
 
    - E.2 Formatierungsmöglichkeiten durch FORMAT()
 
    - E.3 Konstanten für die Attribute von DIR
 
    - E.4 Dateifunktionen
 
    - E.4.1 Verfügbare Funktionen
 
    - E.4.2 Definierte Konstanten
 
  
  - Anhang F: Vorrangregeln (Hierarchie der Operatoren)
 
  - Anhang G: FreeBASIC-Schlüsselwörter
 
  
    - G.1 Schlüsselwörter
 
    - G.2 Metabefehle
 
    - G.3 Vordefinierte Symbole
 
  
  
 
  - Index
 
  - Liste der Quelltexte