fb:porticula NoPaste
DEBUG-Info mit Macro im Fenster anzeigen
Uploader: | Lothar Schirm |
Datum/Zeit: | 01.04.2011 18:35:24 |
'==============================================================================
' Debuggen von Programmen (Fenstertechnik mit VIEW PRINT)
' DEBUG.BAS
' Erstellt am 11.11.2010
' Letzte Ueberarbeitung am 01.04.11
' Autor: Lothar Schirm
'==============================================================================
' Zum Debuggen im Fenster muessen folgende Anweisungen unter die betreffende(n)
' Programmzeile(n) geschrieben werden (Beispiel):
'
' ViewDEBUG(1, 5) 'DEBUG-Fenster Zeile 1 bis 5 oeffnen
' DEBUG(x, 0) 'DEBUG-Ausgaben (Variable x, y, z) ins DEBUG-Fenster
' DEBUG(y, 0)
' DEBUG(z, 1)
' ExitDEBUG 'Rueckkehr aus dem DEBUG-Fenster ins Programm
'
' Wenn ViewDEBUG und ExitDEBUG ausgelassen werden, erfolgt die Ausgabe der
' DEBUG-Informationen fortlaufend im Programm, beginnend ab der aktuellen
' Cursorposition.
DIM SHARED AS INTEGER Prog_row, Prog_col, Screen_bpp, Prog_fcolr, Prog_bkcolr, _
TextWin_row0, TextWin_row1, DEBUG_key
DECLARE SUB ViewDEBUG (Startzeile AS INTEGER, Endzeile AS INTEGER)
DECLARE SUB ExitDEBUG
#MACRO DEBUG(v, Break)
' Ausgeben von DEBUG-Informationen (Variable v). Bei Break <> 0 wird das Programm
' angehalten. Fortsetzen mit F1, Beenden mit ESC.
'Ausgabeformat: Prozedur, Zeile, "v: ", v
PRINT __FUNCTION__; __LINE__; SPACE(1); #v; ": "; v
IF Break <> 0 THEN
PRINT "F1: Weiter ESC: Ende"
DO
DEBUG_key = GETKEY
LOOP UNTIL DEBUG_key = &H3BFF OR DEBUG_key = &H1B
IF DEBUG_key = &H1B THEN END
END IF
#ENDMACRO
SUB ViewDEBUG (Startzeile AS INTEGER, Endzeile AS INTEGER)
' Eroeffnet mit VIEW PRINT Startzeile to Endzeile ein DEBUG-Fenster, in das alle
' nachfolgenden Ausgaben erfolgen.
'Aktuelle Textfenstergroesse, Cursorposition und Farben des Programms speichern:
TextWin_row0 = LOWORD(VIEW PRINT())
TextWin_row1 = HIWORD(VIEW PRINT())
Prog_row = CSRLIN
Prog_col = POS
SCREENINFO ,,, Screen_bpp
IF Screen_bpp < 2 THEN
Prog_fcolr = LOWORD(COLOR)
Prog_bkcolr = HIWORD(COLOR)
END IF
'DEBUG-Fenster schwarz auf kobaltblau (nur bei 1 byte pro Pixel):
VIEW PRINT Startzeile TO Endzeile
IF Screen_bpp < 2 THEN COLOR 0, 3
CLS 2
END SUB
SUB ExitDEBUG
' Rueckkehr aus dem DEBUG-Fenster in das Programm
VIEW PRINT TextWin_row0 TO TextWin_row1
IF Screen_bpp < 2 THEN COLOR Prog_fcolr, Prog_bkcolr
LOCATE Prog_row, Prog_col
END SUB