ActiveBasic 勝手にFAQ

どうせ誰も見てないと思うから、勝手にFAQを作ってみる。
よくある質問と答えといっても、誰も俺に質問したこと無いけど。
注意!このコーナーは他のコンテンツよりも役に立たないと思われます。
問題があれば連絡してください。

インストール・基本
変数の宣言と初期化
N88BASICとの互換性
(ページ内リンク。出口は一番下にある。)

インストール・基本

Q1:そもそもActiveBasicて何?

A1:ActiveBasicはDiscoversoftで開発された新しい統合開発環境である。
ActiveBasicはBasicの名がついてかいるが実際はC++に近い。オマケ程度ではあるが、N88-BASICとの互換性もある。


Q2:インストールについて教えろ。

A2:まだインストールして無いなら最新版をダウンロードする。昔のバージョンはレジストリに設定が保存されるよ。
ただバージョンアップによって過去のプログラムがコンパイルできなくなることもあるから、現在のバージョンで不具合が無いのならそのまま使い続けるのもいいかも。


Q3:インストールしたがどうしていいのか分からん。

A3:俺もそうだった。N88BASIC経験のある俺でも最初はどうしたらいいのか分からずしばらく99BASIC使ったよ。
まずは公式サイトのWin32プログラミング講座を何も考えずにやってみる。
バージョンのエラーが出たら無視して次の講座にいく。
そしているとABがなんとなくわかると思う。
私以外のWebリングのサイトには親切な説明があるから、よく読んでやってみる。とにかくサンプルを実行してみることだ。
そういった解説サイトのBBSとかで間違っても「コードくれ」なんてやるなよ。


Q4:行番号がないよ。

A4:無くても動く。あっても動く。


Q5:Win32とかAPIてなんや?

A5:Win32は32ビットウインドウズ。APIはApplication Program Interfaceの略。簡単に言えばシステム提供の関数のこと。


Q6:Win32APIを知りたい

A6:本買うなり、サイト回るなりGoogleするなりして調べるのが一番いいと思うがな。


Q7:○○したいんですけど、どうしたら良いですか?コードください。

A7:○○したいという目標があるんなら、その言葉をGoogleにぶつけてください。きっと見つかるでしょう。


Q8:ポインタがわからん。教えろ。

A8:ABでポインタを使う場所はそんなにないよ。せいぜい文字列(配列)を扱うときと、Win32API関数が絡んだときだろう。
バグったらポインタの指す先がメモリ確保されてないと思うよ。ポインタがどこを指してるのか確認するといいよ。


Q9:文字列の使い方が分からん。

A9:ABはString型があるが、使うのは控えよう。Win32APIと出会うとバグるらしい。Byte型配列を使うべし。
Byte型配列は最初わけ分からんかも知れないが、バグるうちに出来るようになる。
とにかく、沢山のプログラムを組んで、バグって書き直してを繰り返すことが必要かも。
一番いいのはこんなプログラムを作りたいという意思。

変数の宣言と初期化とポインタ

Q1:どの型にしたらいい?

A1:整数で負の数使うならならLong,それ以外DWord。実数ならDouble。文字列はByteかBytePtr。


Q2:宣言したら初期化されるの?

A2:今のところ(V4.23)初期化される。


Q3:外部変数と内部変数が同じ名前のとき、どうなるの?

A3:内部変数が有効。あたりまえ。


Q4:やっぱりポインタが分からん。教えれ。

A5:ポインタは単にメモリのどこかを指すもの。
BytePtrとかDWordPtrとかあるが、インクリメントした時の増分が異なるだけ。
以下にポインタを使った文字列処理を示す。
Dim moji As BytePtr
moji = malloc(100)'これで100バイトまで使える。

lstrcpy(moji , "これはテストです。")'mojiに代入。
lstrcat(moji , "今日は6点だった。")'連結。

moji[14] = Asc("A")'14バイトめをAにする。
moji[15] = 0'0にすると、それ以降の文字は表示されなくなる。
MessageBox(NULL , moji , "表示してみる" , MB_YESNO)
free(moji)'借りたメモリを返す。


Q6:ポインタを使うメリットって何。

A6:無い。


Q7:構造体を使うメリットって何。

A7:沢山の変数をまとめることが出来る。データの一括コピーが可能。

N88BASICとの互換性

Q1:どれくらい互換性があるの?

A1:そのままでは動かない。肝心のREAD、DATAがない。BEEP命令のトリックも使えない。


Q2:mon出来る?

A2:できない。そもそもmonコマンドのある互換BASICてあるのか?


Q3:PEEKやPOKEが無い。

A3:自分で作るしかない。POKEは命令だからABでは関数にするしかない。
WriteProcessMemoryやReadProcessMemory関数を使うと出来るかもしれない。


Q4:PLAY命令が無いよ。

A4:MCIかなんかでMIDI鳴らせ。もしくはプログラム中にMIDIデータを作り再生するプログラムを書け。


Q5:変数が無効な識別子というエラーがでる。

A5:ABは事前に変数をDimで宣言する必要がある。


Q6:配列の宣言でエラーになる。

A6:ABでは配列のサイズを指定するとき変数は使えない。定数で指定すること。
それがいやだったらmalloc、freeを使うしかない。


Q7:SCREEN 0:CONSOLE ,,0,1:WIDTH 80,25:CLS 3は使えないの?

A7:CLS 3しか使えないよ。


Q8:AUTOが無い。行番号打ち込むのメンドイ。

A8:だから行番号は使わなくてもプログラミングできる。


Q9:ON~GOTOとかが無い。

A9:形は悪くなるがSelect Caseで代用。


Q10:FILESは使えないの?

A10:ハニリイト。そもそもN88BASICのコマンドは全部使えない。
SAVE,LOAD,LIST,RUNもダメ。ダイレクトモードも無いぞ。


Q11:PUTとかGETが無い。

A11:無いもんは無い。
これ以外の命令、関数もそうだが、必要なものは自前で用意する。探せば有志がいくつか公開してるぞ。


▲戻る