強制終了してしまう

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 強制終了してしまう

Re: 強制終了してしまう

by MML » 2007年9月01日(土) 10:13

> キーボードを鍵盤に見立てて演奏するような感じで打ち込んだキーに対応する文字をファイルにするプログラムです。
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、などを使えといいです。

by konisi » 2007年8月30日(木) 18:55

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

コード: 全て選択

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$

Re: 強制終了してしまう

by 旭が丘 » 2007年8月30日(木) 15:30


名前を入れるの忘れました。旭が丘です

Re: 強制終了してしまう

by ゲスト » 2007年8月30日(木) 15:27

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

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

キーボードを鍵盤に見立てて演奏するような感じで打ち込んだキーに対応する文字をファイルにするプログラムです。
使うソフトはフリーソフトの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: 強制終了してしまう

by MML » 2007年8月30日(木) 12:28

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

強制終了してしまう

by 旭が丘 » 2007年8月30日(木) 10:42

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インデントは消されるようです。

ページトップ