Area: Quik_Bas Msg: #364 Date: 02-20-93 19:11 (Public) From: Jeff Freeman To: Quinn Tyler Jackson Subject: TXT2ANSI 1/1
DECLARE SUB sjfParse (Temp$(), Temp$, Tsep$, twc%) DECLARE FUNCTION fjfTOANSI$ (Cmnd$) DECLARE FUNCTION Txt2Ansi% (Txt$, Ansi$) DECLARE FUNCTION sjfTOANSI$ (Cmnd$) DEFINT A-Z 'Load ANSI.SYS and execute this program to view @-commands ' translated to ANSI OPEN "cons:" FOR OUTPUT AS #1 X = Txt2Ansi("@CLS;Down:9;fore:bold@This _ @Fore:blink,bold,white;Back:blue@is_ really@fore:green,bold;back:black@ _ neat!@fore:white;back:black;locate:12,10@_ using @@-commands", Ansi$) PRINT #1, Ansi$ 'valid commands are: 'CLS - Clears the screen 'FORE:color,attrib - Sets foreground color, BLINK and/or BOLD 'BACK:color - Sets background color 'UP:xx - moves the cursor xx spaces 'DOWN:xx 'RIGHT:xx 'LEFT:xx 'LOCATE:row,column - move cursor to row,column 'EOL - erase to end of line 'SAVE - save cursor position. 'RESTORE - restore cursor position. END ' ' Format of CmndLine$ is: ' @command:parameter@ ' ' multiple parameters: ' @command:parm,parm@ ' ' multiple commands: ' @command:parm,parm;command;command:parm@ ' ' ***There are no spaces in CmndLine$*** ' FUNCTION fjfTOANSI$ (CmndLine$) 'return @ if passed @@ IF CmndLine$ = "@@" THEN fjfTOANSI$ = "@": EXIT FUNCTION IF CmndLine$ = "" THEN EXIT FUNCTION 'strip the leading and trailing @'s CmndLine$ = MID$(CmndLine$, 2, LEN(CmndLine$) - 2) DIM Cmnds$(9), Params$(9): Out$ = "" 'put each command in a separate Cmnds$() sjfParse Cmnds$(), CmndLine$, ";", NumCmnds FOR CmndNum = 1 TO NumCmnds 'separate the command from the Params$ sjfParse Params$(), Cmnds$(CmndNum), ":", NumParams Cmnd$ = UCASE$(Params$(1)): ListParams$ = Params$(2) 'put each Param in a separate Params$() sjfParse Params$(), ListParams$, ",", NumParm Out$ = Out$ + CHR$(27) + "[" SELECT CASE Cmnd$ CASE IS = "FORE" Out$ = Out$ + "0" FOR Parm = 1 TO NumParm SELECT CASE UCASE$(Params$(Parm)) CASE "BOLD": Out$ = Out$ + ";1" CASE "BLINK": Out$ = Out$ + ";5" CASE "BLACK": Out$ = Out$ + ";30" CASE "RED": Out$ = Out$ + ";31" CASE "GREEN": Out$ = Out$ + ";32" CASE "YELLOW", "BROWN": Out$ = Out$ + ";33" CASE "BLUE": Out$ = Out$ + ";34" CASE "MAGENTA", "PURPLE": Out$ = Out$ + ";35" CASE "CYAN": Out$ = Out$ + ";36" CASE "WHITE": Out$ = Out$ + ";37" END SELECT NEXT Parm Out$ = Out$ + "m" CASE "BACK" SELECT CASE UCASE$(Params$(1)) CASE "BLACK": Out$ = Out$ + "40" CASE "RED": Out$ = Out$ + "41" CASE "GREEN": Out$ = Out$ + "42" CASE "YELLOW", "BROWN": Out$ = Out$ + "43" CASE "BLUE": Out$ = Out$ + "44" CASE "MAGENTA", "PURPLE": Out$ = Out$ + "45" CASE "CYAN": Out$ = Out$ + "46" CASE "WHITE": Out$ = Out$ + "47" END SELECT Out$ = Out$ + "m" CASE "CLS": Out$ = Out$ + "2J" CASE "UP": Out$ = Out$ + Params$(1) + "A" CASE "DOWN": Out$ = Out$ + Params$(1) + "B" CASE "RIGHT": Out$ = Out$ + Params$(1) + "C" CASE "LEFT": Out$ = Out$ + Params$(1) + "D" CASE "LOCATE": Out$ = Out$ + Params$(1) + ";" + Params$(2) + "H" CASE "EOL": Out$ = Out$ + "K" CASE "SAVE": Out$ = Out$ + "s" CASE "RESTORE": Out$ = Out$ + "u" CASE ELSE: Out$ = "" END SELECT NEXT CmndNum fjfTOANSI$ = Out$ END FUNCTION SUB sjfParse (Temp$(), Temp$, Tsep$, twc) L = LEN(Temp$): wc = 0 FOR z = 1 TO L ch$ = MID$(Temp$, z, 1) IF ch$ <> Tsep$ THEN word$ = "" wc = wc + 1 FOR z1 = z TO L ch$ = MID$(Temp$, z1, 1) IF ch$ = Tsep$ THEN EXIT FOR word$ = word$ + ch$ NEXT z1 z = z1 'IF wc <= twc THEN Temp$(wc) = word$ Temp$(wc) = word$ END IF NEXT z twc = wc END SUB FUNCTION Txt2Ansi (Txt$, Ansi$) Ansi$ = "" DO StrStart = INSTR(Txt$, "@") IF StrStart = 0 THEN StrStart = LEN(Txt$) + 1 IF StrStart <> 1 THEN Ansi$ = Ansi$ + LEFT$(Txt$, StrStart - 1) Txt$ = MID$(Txt$, StrStart) END IF StrEnd = INSTR(2, Txt$, "@") IF StrEnd = 0 THEN StrEnd = LEN(Txt$) Cmnd$ = LEFT$(Txt$, StrEnd) Ansi$ = Ansi$ + fjfTOANSI$(Cmnd$) Txt$ = MID$(Txt$, StrEnd + 1) LOOP WHILE LEN(Txt$) END FUNCTION --- * Origin: WarWorld's point away from home... (1:124/7006.1)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET