強制終了してしまう

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
旭が丘

強制終了してしまう

#1 投稿記事 by 旭が丘 »

OS:Xp Home
メモリ:512MB
HDD:80BGを3分割 空き容量Eを除き10GB前後

デバッグ実行をすると、最初はエラーの続出、これは当然ですが・・・
エラーを修復して、エラーのでなくなったとき、いきなり強制終了です。

ファイルは、通常のBASICファイル(行番号なし)です
eメールでの質問を試みましたが、アドレスが存在しませんでした。

旧タイプの表記方法では作動できなくなったのでしょうか

このような表記です

省略(dim宣言は終了しています)
Chk$="Documents and Settings"
do
Ky$=Input$(1)
select case K$
case Chr$(13)'エンターキーで入力終了(exeファイルにするときはChr$(27)がいい)
Exit do
case "z"
K$="d"
case "x"
K$="r"
case "c"
K$="m"
case "v"
K$="f"
case "b"
K$="s"
case "n"
K$="l"
case "m"
K$="c"
長いので以下略

TABインデントは消されるようです。
MML
記事: 154
登録日時: 2006年5月02日(火) 16:27

Re: 強制終了してしまう

#2 投稿記事 by MML »

見たところ、なにをするプログラムかちょっとわからないんですけど、
Select文で「String」型は使えなかったと思います。
ゲスト

Re: 強制終了してしまう

#3 投稿記事 by ゲスト »

レス、ありがとうございます。

> 見たところ、なにをするプログラムかちょっとわからないんですけど、

キーボードを鍵盤に見立てて演奏するような感じで打ち込んだキーに対応する文字をファイルにするプログラムです。
使うソフトはフリーソフトのMUSEです。
VBSでなら簡単に作れますが、打ち込んだ文字が画面に反映されないために
BASICで作ろうと思いました。
Ver2.62ではIF文の塊となっています。


> Select文で「String」型は使えなかったと思います。

#prompt
Dim i%
for i%=0 to 25
 Select case Chr$(i%+65)
  Case "A","D","H","X","Y"
   Print Chr$(i%+65);"---"
  Case else
 End Select
Next
文字列でも動作しました。

これだと動くということは、プログラムのどこかに問題があるようです。
バグが隠れている可能性もありますが、メールが届かないために打つ手がありません。


どこでエラーが起きているのかさえも分かりませんが…Select Caseが
使えるということだけでも、かなりの価値はあります。
とにかく・・・まともなソフトはQuickBASICでしか作っていません。
そのために文法の大幅に異なるVBやCでは作れないのです。
Windows以前のDiskBASIC~MS-DOS時代は高速化を費用とする部分のみ
アセンブラで作っていました(PC9801~BX)

横着のためにソフト作りを始めた次第です・・・
旭が丘

Re: 強制終了してしまう

#4 投稿記事 by 旭が丘 »


名前を入れるの忘れました。旭が丘です
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#5 投稿記事 by konisi »

昔こんな風にしたら上手く動いた記憶が。

コード: 全て選択

select case Asc(K$)
    case 13
        Exit do
    case Asc("z")
        K$="d"
    case Asc("x")
        ...

ところで、この2行は間違いに見えるのですが。

コード: 全て選択

    Ky$=Input$(1)
    select case K$      '←Ky$ or K$
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
MML
記事: 154
登録日時: 2006年5月02日(火) 16:27

Re: 強制終了してしまう

#6 投稿記事 by MML »

> キーボードを鍵盤に見立てて演奏するような感じで打ち込んだキーに対応する文字をファイルにするプログラムです。
GetkeyStateを使えばいいと思います。(チェックする分だけ)

コード: 全て選択


Dim i As Integer
for i=0 To 255
if GetKeyState(i) And &h80 Then '1
   'ここで押されていたの処理
End if
next
↑のプログラムは「全部のキー」をチェックするプログラムになってますが...
重要な部分は「'1」の行だけです。はい。

iにはASCIIコードが入ります。Asc("")でいいです。
ちなみに、余談ですが、MUSEなどを使わず音楽(MIDI音源を直接)を鳴らしたいをのなら
midiOutOpen、midiOutClose、midiOutShortMsg、などを使えといいです。
返信する