[
新規
] - [
ツリー
] - [
スレッド
] [
未解決
] [
緊急
] - [
優先
] - [
検索
] - [
なでしこTOP
]
「なでしこv1」開発掲示板
なでしこv1のバグや要望を書き込む掲示板
→
書き込み(
#1204
)を編集する:
名前
タイトル
本文
【症状】特定条件下で正しくGUI部品のイベントが実行されず、違う部品のイベントが実行される 【要望】正しいイベントが実行されるように。 【バージョン】1.5322 【その他】 一応既に原因の特定と不具合の修正はできたと思うのですが、 元々のコードがなぜこうなっていたのか分からないので、コミット少し保留。 もうちょっと調べます。 できれば、他の方も再現するかどうか報告お願いします。(慎重に対処したいので) 【再現方法】 再現条件の最小化に失敗したので、長いけれどプログラム全文で載せときます。 実行したら、 1. ステップ実行をクリック 2. ステップアウトをクリック 3. 「なにも・・・」と言われるはずなのに、ステップ実行クリック時が実行される 再現するのは、ループ処理中(秒待つ中?)かつ初回クリック時のようですが、詳しくは不明 (初回クリックの説明はつくが、なぜループ処理中なのか説明がつかないf(^^; ) #----------------------------------- # ここから最後まで #---------------- ウェイトとは変数 ウェイトは~0.1秒待つ !左限界幅=160 !ASCII表=『 !"#$%&'()*+,-./ 0123456789:;<=>? @ABCDEFGHIJKLMNO PQRSTUVWXYZ[\]^_ `abcdefghijklmno pqrstuvwxyz{|}~ 』 aとは配列 kとは整数 sとは整数 !NORMAL =$00 !LOOP_BEGIN=$01 !LOOP_END =$02 !LOOP_BODY =$04 !インクリメント=`+` !デクリメント =`-` !ポインタ後進 =`<` !ポインタ前進 =`>` !ループ開始 =`[` !ループ終了 =`]` !アスキー出力 =`.` 処理とはハッシュ 処理@インクリメント=~ a[k]=a[k]+1 処理@デクリメント =~ a[k]=a[k]-1 処理@ポインタ後進 =~ k=k-1 処理@ポインタ前進 =~ k=k+1 処理@ループ開始 =~ s=LOOP_BEGIN 処理@ループ終了 =~ s=LOOP_END 処理@アスキー出力 =~ PUTCHR(a[k]) ●PUTCHR(N) CHR(N)をコンソール追加 ステップ実行ハンドラとは変数 編集台とはパネル そのレイアウトは『全体』 BFEとはTエディタ その親部品は編集台 そのレイアウトは『全体』 その編集はOK そのテキストは『++++++++++++++++++++++++++++++++++++++++++++++++++.』 コンソールとはメモ その親部品は編集台 そのレイアウトは『下』 その文字色は非アクティブ色 その背景色は黒色 その編集はオフ その折り返しは有効 /* 作業台とはパネル そのレイアウトは『左』 その幅は左限界幅 プリンとはスプリッタ その変更した時は~ もし作業台の幅<左限界幅ならば 作業台の幅=左限界幅 マクロ箱とはグループボックス そのテキストは『マクロ』 その親部品は作業台 そのレイアウトは『全体』 マクロとはコンボ その親部品はマクロ箱 そのレイアウトは『上』 マクロエディタとはメモ その親部品はマクロ箱 そのレイアウトは『全体』 実行箱とはグループボックス そのテキストは『実行』 #その親部品は作業台 そのレイアウトは『下』 その高さは120 # */ 0,0へ移動 実行とはボタン #その親部品は実行箱 そのレイアウトは『上』 これがクリックされた時は~ 最適化実行処理 ステップ実行とはボタン #ステップ実行の親部品は実行箱 ステップ実行のレイアウトは『上』 実行フラグはオフ ステップ実行がクリックされた時は~ 一文字ずつ実行処理 ステップアウトとはボタン #ステップアウトの親部品は実行箱 ステップアウトのレイアウトは『上』 ステップアウトがクリックされた時は~ 「なにもないけど。」と言う /* カーソル行迄とはボタン そのテキストは『カーソルまで実行』 その親部品は実行箱 そのレイアウトは『上』 ASCII箱とはグループボックス そのテキストは『ASCII』 その親部品は作業台 そのHは150 そのレイアウトは『下』 ASCII一覧とはTエディタ これについて 親部品はASCII箱 レイアウトは『全体』 編集はNG テキストはASCII表 サイズ。 レイアウトは空 サイズはそれ W=W+50;X=X-30 H=H+20 # */ ●最適化実行処理 もしBFEの編集がOKならば 実行コンテクスト初期化 「Execute [NORMAL MODE]{~}」をコンソール追加 ステップ実行ハンドラは空 共通実行処理 違えば 実行フラグはオフ ウェイト ステップ実行ハンドラは空 ●一文字ずつ実行処理 もしBFEの編集がOKならば 実行コンテクスト初期化 「Execute [BY STEP]{~}」をコンソール追加 ステップ実行ハンドラ\0は~ 実行フラグはオン ステップ実行ハンドラ\1は~ (実行フラグ)の間 ウェイト # 実行フラグがオフになるまで待機 共通実行処理 違えば 実行フラグはオフ ●共通実行処理 BFEの編集はNG BFEをBrainFuck実行 BFEの編集はOK ●実行コンテクスト初期化 コンソールは空 a=空#を文字列分解) ●BrainFuck実行({文字列}STRを) ARRとは文字列=STRを文字列分解 Lとは整数=ARRの要素数 Iとは整数 深さとは整数 ループマップとは配列 改行をコンソール追加 (I<L)の間 ステップ実行ハンドラ\0。# 他のボタンを押した時の再処理?を防ぐ ステップ実行ハンドラ\1。# ステップ実行時は、ここで処理を待機させる 対象=ARR[I] 対象をコンソール追加 処理@(対象) sで条件分岐 LOOP_BEGINならば もしa[k]が0ならば ARRでIを深さまでループブレイク s=LOOP_BREAK 違えば ループマップ[深さ]=I 深さ=深さ+1 s=LOOOP_BODY LOOP_ENDならば もしa[k]が0ならば 深さ=深さ-1 もし深さ>0ならばs=LOOP_BODY 違えばs=NORMAL 違えば I=ループマップ[深さ] I=I+1 ウェイト 「{~}Finished」をコンソール追加 # 位置Iから開始して、ARR[I]が目標深度でループ終了になるまで進める。 ●ループブレイク(ARRで{参照渡し}Iを目標深度まで) 現在深度とは整数=目標深度+1 (現在深度>目標深度)の間 I=I+1 ARR[I]で条件分岐 ループ開始ならば現在深度=現在深度+1 ループ終了ならば現在深度=現在深度-1 ●コンソール追加(Sを) コンソール=コンソール&S
優先度
低
中
高
緊急
状態
未処理
詳細求む!
調査中
議論中
修正中
確認待ち
再修正依頼
解決
---
重複
---
アイデア
感想
告知
感謝
確認キー
👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。
編集キー
編集時に使うキーを入力(省略可能)
添付ファイル
🎁
ファイルを選択...
画像ファイル(最大300KB)を添付可能