Schnelltipp: Bildschirm unter BlitzBasic löschen

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!


[Übersicht]