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

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

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

File size: 3.4 KB
RevLine 
[1]1'dos_console.sbp
2'このファイルには、コンソール アプリケーション用のサポート プログラムが記載されます。
3
4
5#ifndef _INC_DOS_CONSOLE
6#define _INC_DOS_CONSOLE
7
[627]8System.Console.OpenStandardError()
9System.Console.OpenStandardInput()
10System.Console.OpenStandardOutput()
[1]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)
[432]17*InputReStart '多重Continueがあるので、これはループ構文に直せない。
[1]18 PRINT_ToPrompt(ShowStr)
19
20 '入力
[432]21 Dim input = System.Console.ReadLine()
22 If ActiveBasic.IsNothing(input) Then
23 Exit Sub
[110]24 End If
[1]25
[432]26 If input.Length = 0 Then Goto *InputReStart
[272]27
[1]28 'データを変数に格納
[497]29 Const comma = &h2c As Char 'Asc(",")
[432]30 Dim broken = ActiveBasic.Strings.Detail.Split(input, comma)
[272]31 Dim i As Long
32 For i = 0 To ELM(broken.Count)
33 If _System_InputDataPtr[i] = 0 Then
[142]34 PRINT_ToPrompt(Ex"入力データの個数が多すぎます\r\n")
[432]35 Goto *InputReStart
[1]36 End If
[593]37 _System_Input_SetArgument(_System_InputDataPtr[i], _System_InputDataType[i], broken.Item(i))
[272]38 Next
[1]39
[272]40 If _System_InputDataPtr[i]<>0 Then
41 PRINT_ToPrompt(Ex"入力データの個数が足りません\r\n")
[432]42 Goto *InputReStart
[272]43 End If
[1]44End Sub
45
[627]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*/
[1]112Macro LOCATE(x As Long, y As Long)
[627]113 System.Console.SetCursorPosition(x,y)
[1]114End Macro
115
116Sub PRINT_ToPrompt(buf As String)
[432]117 If String.IsNullOrEmpty(buf) Then
118 Exit Sub
119 End If
120
[522]121 System.Console.Write(buf)
[1]122End Sub
[288]123/* TODO: _System_GetUsingFormatを用意して実装する
[1]124Sub PRINTUSING_ToPrompt(UsingStr As String)
125 PRINT_ToPrompt(_System_GetUsingFormat(UsingStr))
126End Sub
[288]127*/
[1]128
129#endif '_INC_DOS_CONSOLE
Note: See TracBrowser for help on using the repository browser.