新しく発言する  EXIT  インデックスへ

MATGETPOINT実行時の中断


  MAT GET POINT実行時の中断 荒田浩二 2008/07/19 09:20:13 
  BASICのデバッグ機能は文単位なので,文の実... 白石 和夫 2008/07/19 15:26:38 
  MATGETPOINT文の動作を変えてしまうことが可... 白石 和夫 2008/07/19 17:01:19 
   ├早々にお返事いただきありがとうございます... 荒田浩二 2008/07/20 00:19:40 
   │└デバッグは文単位です。 白石 和夫 2008/07/20 10:12:03 
   └INPUT文のように,続行か,プログラムの中止... 白石 和夫 2008/07/20 10:43:18 
    └Ctrl-Bで,続行か中止かを選ぶダイアログを... 白石 和夫 2008/07/21 09:47:35  (修正1回)
     └ありがとうございます。 荒田浩二 2008/07/22 00:45:10  (修正1回)

  MAT GET POINT実行時の中断 荒田浩二 2008/07/19 09:20:13   ツリーへ
MAT GET POINT実行時の中断  返事を書く  ノートメニュー
荒田浩二 <knrztrhoel> 2008/07/19 09:20:13
次のプログラムは、30行で10ヶ所の点の座標を取得し配列Mに代入し、40行で描画するものです。
先日、30行で6個の点をクリック後、プログラムを中止しようとして中断ボタンを押しました。
しかしプログラム窓下段のステータスバーに「中断します.お待ちください.」と表示されるだけで、一向に中断しません。
しかたがないので[閉じる]ボタンで十進BASICそのものを終了しようとしましたが、うまくいきません。
けっきょくパソコンを再起動することで終了させました。
どうもMAT GET POINT文を実行中は、配列の大きさぶんの点の座標の取得を完了しなければ中断できないようです。
INPUT文でも同様の現象は生じているのでしょうが、入力ボックスには[中止]ボタンがあり迷うことはありません。
ところがMAT GET POINT文では、中断する手がかりとなるものが見当たりません。
悲劇(?)を繰り返さないために、次の2点のどちらかをご検討いただけないでしょうか。
(A) 中断ボタンが押されたら、入力の完了を待たずにただちにDebug窓を表示させる。
(B) ステータスバーに入力の完了を促すコメントを表示する。
よろしくお願いいたします。

10 PLOT TEXT ,AT .05,.95 : "GRAPHIC画面上の10ヶ所をクリック"
20 DIM M(10,2)
30 MAT GET POINT : M
40 MAT PLOT POINTS : M
50 END

  BASICのデバッグ機能は文単位なので,文の実... 白石 和夫 2008/07/19 15:26:38   ツリーへ
Re: MAT GET POINT実行時の中断  返事を書く  ノートメニュー
白石 和夫 <fbdfvqwhki> 2008/07/19 15:26:38
BASICのデバッグ機能は文単位なので,文の実行途中でデバッグ状態に以降することができません。
そのため,Breakを検知するとステータスバーにメッセージを表示します。
メッセージ内容を誤解が生じないように変更したいと思います。
  MATGETPOINT文の動作を変えてしまうことが可... 白石 和夫 2008/07/19 17:01:19   ツリーへ
Re: MAT GET POINT実行時の中断  返事を書く  ノートメニュー
白石 和夫 <fbdfvqwhki> 2008/07/19 17:01:19
MAT GET POINT文の動作を変えてしまうことが可能かも知れません。
検討します。
   ├早々にお返事いただきありがとうございます... 荒田浩二 2008/07/20 00:19:40   ツリーへ
Re: MATGETPOINT文の動作を変えてしまうことが可...  返事を書く  ノートメニュー
荒田浩二 <knrztrhoel> 2008/07/20 00:19:40
早々にお返事いただきありがとうございます。
次のことは参考になるでしょうか。

「MAT GET POINT文を実行中に中断しようとすると、中断操作によってポインタの座標が配列に代入される。」

上の例でいえば6個の点の座標を取得した後に中断ボタンを押すと、
ポインタがグラフィックス画面上に最後にあった位置の座標がMの7行目に代入されます。
("Ctrl+B"で中断した場合は、その時のポインタの位置の座標がMの7行目に代入されます。)
その後、残り3ヶ所の点をクリックすると入力が完了したとみなされDebug画面が表示されます。
したがって実質は9個の点しか入力していないことになります。
残念ながらこの時点で[続行]を選択しても意図しない結果になってしまいます。

このあたりのことも考慮していただければありがたいです。
ご多用の所わがままばかりで申し訳ありませんが、よろしくお願いいたします。

尚、GET POINT文でも同様で、下のプログラムを10行で中断するとx,yには最後のポインタの位置の座標が代入されます。

10 GET POINT : x,y
20 PLOT POINTS : x,y
30 END

   │└デバッグは文単位です。 白石 和夫 2008/07/20 10:12:03   ツリーへ
Re: 早々にお返事いただきありがとうございます...  返事を書く  ノートメニュー
白石 和夫 <fbdfvqwhki> 2008/07/20 10:12:03
デバッグは文単位です。
文の実行途中でDebug状態への移行を可能にすることは,実行中の文のそれ以後の実行をキャンセルすることを意味することになります。


   └INPUT文のように,続行か,プログラムの中止... 白石 和夫 2008/07/20 10:43:18   ツリーへ
Re: MATGETPOINT文の動作を変えてしまうことが可...  返事を書く  ノートメニュー
白石 和夫 <fbdfvqwhki> 2008/07/20 10:43:18
INPUT文のように,続行か,プログラムの中止かを選べるようにすることを検討します。
    └Ctrl-Bで,続行か中止かを選ぶダイアログを... 白石 和夫 2008/07/21 09:47:35  (修正1回)  ツリーへ
Re: INPUT文のように,続行か,プログラムの中止...  返事を書く  ノートメニュー
白石 和夫 <fbdfvqwhki> 2008/07/21 09:47:35 ** この記事は1回修正されてます
Ctrl-Bで,続行か中止かを選ぶダイアログを表示することにしました。
「中止」を選べば,プログラムの実行を中止します(再開できません)。
「Ok」を選ぶと,残りの点入力が終わると,Debug状態に移行します。

     └ありがとうございます。 荒田浩二 2008/07/22 00:45:10  (修正1回)  ツリーへ
Re: Ctrl-Bで,続行か中止かを選ぶダイアログを...  返事を書く  ノートメニュー
荒田浩二 <knrztrhoel> 2008/07/22 00:45:10 ** この記事は1回修正されてます
ありがとうございます。
中断時の判断もわかりやすく、中断後の続行も可能で、しかもGET POINT文まで修正してくださり、わがままな要望をすべてかなえていただき感謝いたします。

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。