source: trunk/ab5.0/ablib/src/basic/dos_console.sbp@ 627

Last change on this file since 627 was 627, checked in by NoWest, 16 years ago

さらにConsoleクラスを強化しました。
また、COLOR命令、CLS命令、LOCATE命令に対応しました。
PRINT命令はStringクラスのみ対応ですが、一応BASICの命令だけで色々できるようになりました。

File size: 3.4 KB
Line 
1'dos_console.sbp
2'このファイルには、コンソール アプリケーション用のサポート プログラムが記載されます。
3
4
5#ifndef _INC_DOS_CONSOLE
6#define _INC_DOS_CONSOLE
7
8System.Console.OpenStandardError()
9System.Console.OpenStandardInput()
10System.Console.OpenStandardOutput()
11
12'---------- command.sbp内で定義済み ----------
13'Dim _System_InputDataPtr[_System_MAX_PARMSNUM] As VoidPtr
14'Dim _System_InputDataType[_System_MAX_PARMSNUM] As DWord
15'---------------------------------------------
16Sub INPUT_FromPrompt(ShowStr As String)
17*InputReStart '多重Continueがあるので、これはループ構文に直せない。
18 PRINT_ToPrompt(ShowStr)
19
20 '入力
21 Dim input = System.Console.ReadLine()
22 If ActiveBasic.IsNothing(input) Then
23 Exit Sub
24 End If
25
26 If input.Length = 0 Then Goto *InputReStart
27
28 'データを変数に格納
29 Const comma = &h2c As Char 'Asc(",")
30 Dim broken = ActiveBasic.Strings.Detail.Split(input, comma)
31 Dim i As Long
32 For i = 0 To ELM(broken.Count)
33 If _System_InputDataPtr[i] = 0 Then
34 PRINT_ToPrompt(Ex"入力データの個数が多すぎます\r\n")
35 Goto *InputReStart
36 End If
37 _System_Input_SetArgument(_System_InputDataPtr[i], _System_InputDataType[i], broken.Item(i))
38 Next
39
40 If _System_InputDataPtr[i]<>0 Then
41 PRINT_ToPrompt(Ex"入力データの個数が足りません\r\n")
42 Goto *InputReStart
43 End If
44End Sub
45
46/*
47@brief コンソール出力の内容を削除
48@date 2008/9/18
49@auther NoWest
50*/
51Macro CLS()(num As Long)
52 Select Case num
53 Case 2
54 Exit Macro
55 Case Else
56 System.Console.Clear()
57 End Select
58End Macro
59
60/*
61@brief コンソール出力の前景色・背景色を変更
62@date 2008/9/18
63@auther NoWest
64*/
65Macro COLOR(TextColorCode As Long)(BackColorCode=-1 As Long)
66 Select Case TextColorCode
67 Case 1
68 System.Console.ForegroundColor = System.ConsoleColor.Blue
69 Case 2
70 System.Console.ForegroundColor = System.ConsoleColor.Red
71 Case 3
72 System.Console.ForegroundColor = System.ConsoleColor.Magenta
73 Case 4
74 System.Console.ForegroundColor = System.ConsoleColor.Green
75 Case 5
76 System.Console.ForegroundColor = System.ConsoleColor.Cyan
77 Case 6
78 System.Console.ForegroundColor = System.ConsoleColor.Yellow
79 Case 7
80 System.Console.ForegroundColor = System.ConsoleColor.Gray
81 Case Else
82 System.Console.ForegroundColor = System.ConsoleColor.Black
83 End Select
84
85 Select Case BackColorCode
86 Case -1
87 Exit Macro
88 Case 1
89 System.Console.BackgroundColor = System.ConsoleColor.Blue
90 Case 2
91 System.Console.BackgroundColor = System.ConsoleColor.Red
92 Case 3
93 System.Console.BackgroundColor = System.ConsoleColor.Magenta
94 Case 4
95 System.Console.BackgroundColor = System.ConsoleColor.Green
96 Case 5
97 System.Console.BackgroundColor = System.ConsoleColor.Cyan
98 Case 6
99 System.Console.BackgroundColor = System.ConsoleColor.Yellow
100 Case 7
101 System.Console.BackgroundColor = System.ConsoleColor.Gray
102 Case Else
103 System.Console.BackgroundColor = System.ConsoleColor.Black
104 End Select
105End Macro
106
107/*
108@brief コンソール出力のカーソル位置を変更
109@date 2008/9/18
110@auther NoWest
111*/
112Macro LOCATE(x As Long, y As Long)
113 System.Console.SetCursorPosition(x,y)
114End Macro
115
116Sub PRINT_ToPrompt(buf As String)
117 If String.IsNullOrEmpty(buf) Then
118 Exit Sub
119 End If
120
121 System.Console.Write(buf)
122End Sub
123/* TODO: _System_GetUsingFormatを用意して実装する
124Sub PRINTUSING_ToPrompt(UsingStr As String)
125 PRINT_ToPrompt(_System_GetUsingFormat(UsingStr))
126End Sub
127*/
128
129#endif '_INC_DOS_CONSOLE
Note: See TracBrowser for help on using the repository browser.