source: Include/basic/dos_console.sbp@ 110

Last change on this file since 110 was 110, checked in by イグトランス (egtra), 17 years ago

ByteからCharへの変更(不完全)ほか微修正

File size: 2.8 KB
Line 
1'dos_console.sbp
2'このファイルには、コンソール アプリケーション用のサポート プログラムが記載されます。
3
4
5#ifndef _INC_DOS_CONSOLE
6#define _INC_DOS_CONSOLE
7
8
9#include <api_console.sbp>
10
11Dim _System_hConsoleOut As HANDLE, _System_hConsoleIn As HANDLE
12_System_hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE)
13_System_hConsoleIn = GetStdHandle(STD_INPUT_HANDLE)
14
15'---------- command.sbp内で定義済み ----------
16'Dim _System_InputDataPtr[_System_MAX_PARMSNUM] As VoidPtr
17'Dim _System_InputDataType[_System_MAX_PARMSNUM] As DWord
18'---------------------------------------------
19Sub INPUT_FromPrompt(ShowStr As String)
20 Dim i As Long, i2 As Long, i3 As Long
21 Dim buf As String
22 Dim InputStr[1023] As Byte
23 Dim dwAccessBytes As DWord
24
25*InputReStart
26
27 PRINT_ToPrompt(ShowStr)
28
29 '入力
30 ReadConsole(_System_hConsoleIn, InputStr, Len(InputStr), dwAccessBytes, 0)
31 If InputStr[dwAccessBytes-2] = &h0d And InputStr[dwAccessBytes-1] = &h0a Then
32 InputStr[dwAccessBytes-2] = 0
33 End If
34
35 'データを変数に格納
36 i=0
37 i2=0
38 buf.ReSize(lstrlen(InputStr) + 1, 0)
39 Dim comma As Char
40 comma = &h2c 'Asc(",")
41 While 1
42 i3=0
43 While 1
44 If InputStr[i2]=comma Then
45 buf[i3]=0
46 Exit While
47 End If
48
49 buf[i3]=InputStr[i2]
50
51 If InputStr[i2]=0 Then Exit While
52
53 i2++
54 i3++
55 Wend
56
57 Select Case _System_InputDataType[i]
58 Case _System_Type_Double
59 SetDouble(_System_InputDataPtr[i],Val(buf))
60 Case _System_Type_Single
61 SetSingle(_System_InputDataPtr[i],Val(buf))
62 Case _System_Type_Int64,_System_Type_QWord
63 SetQWord(_System_InputDataPtr[i],Val(buf))
64 Case _System_Type_Long,_System_Type_DWord
65 SetDWord(_System_InputDataPtr[i],Val(buf))
66 Case _System_Type_Integer,_System_Type_Word
67 SetWord(_System_InputDataPtr[i],Val(buf))
68 Case _System_Type_Char,_System_Type_Byte
69 SetByte(_System_InputDataPtr[i],Val(buf))
70 Case _System_Type_String
71 Dim pTempStr As *String
72 pTempStr=_System_InputDataPtr[i] As *String
73 pTempStr->Assign(buf, i3)
74 End Select
75
76 i++
77 If _System_InputDataPtr[i]=0 And InputStr[i2]=comma Then
78 PRINT_ToPrompt("入力データの個数が多すぎます"+Chr$(10))
79 Goto *InputReStart
80 ElseIf InputStr[i2]=0 Then
81 If _System_InputDataPtr[i]<>0 Then
82 PRINT_ToPrompt("入力データの個数が足りません"+Chr$(10))
83 Goto *InputReStart
84 Else
85 Exit While
86 End If
87 End If
88
89 i2++
90 Wend
91End Sub
92
93Macro LOCATE(x As Long, y As Long)
94 SetConsoleCursorPosition(_System_hConsoleOut, MAKELONG(x, y))
95End Macro
96
97Sub PRINT_ToPrompt(buf As String)
98 Dim dwAccessBytes As DWord
99 WriteConsole(_System_hConsoleOut, buf.Chars, buf.Length, dwAccessBytes, 0)
100End Sub
101
102Sub PRINTUSING_ToPrompt(UsingStr As String)
103 PRINT_ToPrompt(_System_GetUsingFormat(UsingStr))
104End Sub
105
106
107#endif '_INC_DOS_CONSOLE
Note: See TracBrowser for help on using the repository browser.