Beim Schreiben von Programmen für die Shell steht man manchmal vor dem Problem, den Bildschirm (eigentlich: Den Inhalt der Shell) löschen zu müssen. Die meisten BASIC-Dialekte verfügen zu diesem Zweck über Befehle wie CLS oder CLEARSCR. Bei BlitzBasic/AmiBlitz3 sind die aber bereits zu anderen Zwecken belegt, es existiert kein eigener Befehl für diesen Zweck.
Abhilfe schafft hier der Umweg über die Ausgabe von Escape-Codes. Dazu hat man zwei Möglichkeiten:
Kompatible Variante
Print Chr$($0c)
Diese Variante läuft unter allen BlitzBasic-Versionen einschließlich AmiBlitz3. Sie druckt das ESC-Zeichen zum Löschen des Bildschirms. Wenn der Befehl öfter im Programm gebraucht wird, dann kann man ihn auch in einer „sprechenden“ String-Variable ablegen:
scrclr.s = Chr$($0c)
Der Aufruf erfolgt dann einfach über die Anweisung: Print scrclr.
Diese Lösung funktioniert sogar unter PureBasic 4.0 Amiga:
; ---------------------------------- ; File: scrclr.pb ; Bildschirm löschen ; Version für PureBasic v4.0 (Amiga) ; Revision: v1.0.1 ; ---------------------------------- ; -- Variablen definieren -- scrclr.s = chr($0c) Print(scrclr) PrintN( "***********************************") PrintN( "* Bildschirm loeschen - Variante 1 *") PrintN( "*************************************") PrintN("") PrintN( "Ich loesche nun den Bildschirm...") PrintN( "Weiter: Linke Maustaste ") MouseWait() Print(scrclr) PrintN( "E N D E ") PrintN("")
Das folgende Listing zeigt die BlitzBasic-Variante:
; ----------------------------------- ; File: scrclr1.ab3 ; Bildschirm loeschen per ESC-Sequenz ; Version: 1.0 (BlitzBasic/AmiBlitz3) ; ----------------------------------- ; Amiga Version String und das Compilerdatum !version {"ScrClr 1.0 (\\__DATE_GER__)"} ; -- Globale Variablen deklarieren -- bScrClr.s = Chr$($0c) ; bb2-Variante ; -- ScrClr: bb2-Variante -- NPrint "***********************************" NPrint "* Bildschirm loeschen - Variante 1 *" NPrint "*************************************" NPrint"":NPrint "Ich loesche nun den Bildschirm..." Print "Weiter: Linke Maustaste " MouseWait Print bScrClr NPrint "E N D E " End
AmiBlitz3-Variante
Selbstverständlich funktioniert die zuvor beschriebene Methode auch unter AmiBlitz3 – allerdings hält der neue Compiler auch eine eigene Möglichkeit vor: Hier muss man aber etwas mehr an Vorbereitung investieren. Zunächst muss AmiBlitz3 für seinen erweiterten Syntax konfiguriert werden: OPTIMIZE 4
Danach gibt man zwei ESC-Sequenzen in Fluchtzeichendarstellung aus:
Print „\\1B[1m“ : Print „\\1Bc“
Das folgende Listing zeigt die AmiBlitz3-Variante:
; ----------------------------------- ; File: scrclr2.ab3 ; Bildschirm loeschen per ESC-Sequenz ; Version: 1.0 (AmiBlitz3-only) ; ----------------------------------- OPTIMIZE 4 ; aktiviere den neuen Syntax von AmiBlitz3 SYNTAX 2 ; Amiga Version String und das Compilerdatum !version {"ScrClr 1.0 (\\__DATE_GER__)"} ; -- Globale Variablen deklarieren -- aScrClr.s = "\\1B[1m" + "\\1Bc" ; ab3-Variante ; -- ScrClr: ab3-Variante -- NPrint "***********************************" NPrint "* Bildschirm loeschen - Variante 2 *" NPrint "*************************************" NPrint"":NPrint "Ich loesche nun den Bildschirm..." Print "Weiter: Linke Maustaste " MouseWait Print aScrClr NPrint "E N D E " End
Diese Variante ist nicht abwärtskompatibel zu BlitzBasic!