コンソールの標準入力(
stdin)、標準出力(
stdout)の連続データを開き、ファイル操作のように使います。
構文:
Open Cons As [#]filenumber
Open Cons For Input As [#]filenumber
Open Cons For Output As [#]filenumber
用法:
result = Open Cons( [For {Input|Output}[,]] As filenumber )
(または、QBのような構文を使います)
Open Cons [For {Input|
Output}] As filenumber
パラメタ:
filenumber
stdin か
stdout の流れに結びつける、使えるファイル番号。(
Freefile で見つけることができます。)
戻り値:
最初の用法で、
Open Cons() は、32 bit
Long を返します:成功すればゼロ (0) を、そうでなければ、ゼロ以外のエラーコードを返します。
記述:
Open Cons は、読み書き用に、コンソールの
stdin や
stdout 流れを開きます。
file number は、流れに結び付けられ、この番号は、以降のファイル操作で使われます。(例えば
Input #)
利用できる
file number は、
Freefile で取得できます。
stdin と
stdout 流れは、呼び出したプロセスの入出力が、OSコマンドによって転送され(運ばれ)たり、または、
Open Pipe で開かれるときに使われます。
ファイル操作で、
stdin と
stdout の両方の流れを開くためには、プロセスで複数の
file numbers を使わなければなりません。
Color 「色」や
Locate「位置指定」などの通常の画面コマンドは、ファイル番号を受け付けないため、このモードでは機能しません。
TAB キーワードは、指定された列番号に関係なく、常に単純なコンマ (
,) として解釈されます (次の出力は、次の 14 桁の境界で行われます)。
Open Cons が返すエラーコードは、次の行で
Err を使って確認できます。関数版の
Open Cons は、32ビット
Long エラーコードを、直接返します。
警告:現在、
Open Cons は上記のようには動作しません。
file mode 指定子がないと、実行時エラー1(不正な関数呼び出し)が発生します。
Input file mode 指定子は、入力モードだけをサポートしています。
しかし、
Output file mode 指定子は、入力モードと出力モードの両方を、同時にサポートしています。
ランタイム・エラー:
(1) Illegal function call-
実行時、filenumber が空いていませんでした。空いている filenumber を見つけるために、Freefile を使って下さい。
例:
Dim a
As String
Open Cons For Input As #1
Open Cons For Output As #2
Print #2,
"Please write something and press ENTER"
Line Input #1,a
Print #2,
"You wrote : ";a
Close
Sleep
FreeBASIC の
Input (命令文) だと、日本語が文字化けしてしまいます。
Open Cons を使うと
実行画面(コンソール)の日本語入力を取得できることを、「
魔術師をめざして(年金ロボットをめざして)」の
FreeBASIC の日本語標準入力問題について、で教えていただきました。ここに転載させていただきます。
QBからの違い:
- QB の構文は以下です。
OPEN "CON:"
FOR INPUT
|OUTPUT AS [#] filenumber
参照: