投稿者:しばっち
投稿日:2019年 8月30日(金)19時57分4秒
|
|
|
10 LET G$=CONFIRM$("よろしいですか(1)")
20 INPUT PROMPT "メッセージ(1) ":A$
30 PRINT A$
40 LET G$=CONFIRM$("よろしいですか(2)")
50 INPUT PROMPT "メッセージ(2) ":B$
60 PRINT B$
70 END
実行順が
10行 → 20行 → 40行 → 30行 → 50行 → 60行 → 70行
となっている。
|
|
|
投稿者:SHIRAISHI Kazuo
投稿日:2019年 8月31日(土)08時08分23秒
|
|
|
> No.4699[元記事へ]
ご報告ありがとうございました。
CONFIRM$関数(独自拡張)の不具合です。
修正します。
> 10 LET G$=CONFIRM$("よろしいですか(1)")
> 20 INPUT PROMPT "メッセージ(1) ":A$
> 30 PRINT A$
> 40 LET G$=CONFIRM$("よろしいですか(2)")
> 50 INPUT PROMPT "メッセージ(2) ":B$
> 60 PRINT B$
> 70 END
>
> 実行順が
> 10行 → 20行 → 40行 → 30行 → 50行 → 60行 → 70行
> となっている。
>
|
|
|
投稿者:しばっち
投稿日:2019年 9月 1日(日)07時20分28秒
|
|
|
> No.4699[元記事へ]
下記の実行順もおかしい
ループ(繰り返し)にすると実行順がおかしくなるようです。
FOR文を外すと正しく動きます。
ステップ実行では問題ありません。
FOR I=1 TO 3
SELECT CASE MESSAGEBOX("よろしいですか "&STR$(I))
CASE 1
PRINT "OK"
CASE 2
PRINT "CANCEL"
END SELECT
NEXT I
END
EXTERNAL FUNCTION MESSAGEBOX(M$)
!flagの値
LET MB_OK=00000000 ![OK]
LET MB_OKCANCEL=00000001 ![OK][キャンセル]
LET MB_ABORTRETRYIGNORE=00000002 ![中止][再試行][無視]
LET MB_YESNOCANCEL=00000003 ![はい][いいえ][キャンセル]
LET MB_YESNO=00000004 ![はい][いいえ]
LET MB_RETRYCANCEL=00000005 ![再試行][キャンセル]
!定数名 値 ボタンの種類
!IDOK= 1 !OK
!IDCANCEL= 2 !キャンセル
!IDABORT= 3 !中止
!IDRETRY= 4 !再試行
!IDIGNORE= 5 !無視
!IDYES= 6 !はい
!IDNO= 7 !いいえ
!定数名 値 アイコンの種類
LET MB_ICONSTOP=16 !0x00000010 停止のアイコン
LET MB_ICONQUESTION=32 !0x00000020 疑問符のアイコン
LET MB_ICONEXCLAMATION=48 !0x00000030 感嘆符のアイコン
LET MB_ICONINFORMATION=64 !0x00000040 吹き出しに「i」のアイコン
LET MESSAGEBOX=MESSBOX(0,M$,"BASIC",BITOR(MB_OKCANCEL,MB_ICONEXCLAMATION))
END FUNCTION
EXTERNAL FUNCTION MESSBOX(OWNER,TEXT$,CAPTION$,FLAG)
ASSIGN "user32.dll","MessageBoxA"
END FUNCTION
-----------------------------------------------------
下記の実行順もおかしい
FOR I=1 TO 3
LOCATE CHOICE:A
PRINT I;":";
PRINT A
NEXT I
END
------------------------------------------------------
下記の実行順もおかしい
FOR I=1 TO 3
PRINT I;":";
LOCATE VALUE ,RANGE 0 TO 100:A
PRINT A
NEXT I
END
別ウィンドゥを出して繰り返すと実行順が狂うようです
|
|
|
投稿者:SHIRAISHI Kazuo
投稿日:2019年 9月 1日(日)20時56分46秒
|
|
|
> No.4705[元記事へ]
LOCATE VALUE, LOCATE CHOICEは修正可能です。
ASSIGN文は,対象がGUI要素かどうか判断するのが難しいので,
BASICAccに準じて ,GUI オプションを追加することで対応します。
> 下記の実行順もおかしい
> ループ(繰り返し)にすると実行順がおかしくなるようです。
> FOR文を外すと正しく動きます。
> ステップ実行では問題ありません。
>
> FOR I=1 TO 3
> SELECT CASE MESSAGEBOX("よろしいですか "&STR$(I))
> CASE 1
> PRINT "OK"
> CASE 2
> PRINT "CANCEL"
> END SELECT
> NEXT I
> END
>
> EXTERNAL FUNCTION MESSAGEBOX(M$)
> !flagの値
>
> LET MB_OK=00000000 ![OK]
> LET MB_OKCANCEL=00000001 ![OK][キャンセル]
> LET MB_ABORTRETRYIGNORE=00000002 ![中止][再試行][無視]
> LET MB_YESNOCANCEL=00000003 ![はい][いいえ][キャンセル]
> LET MB_YESNO=00000004 ![はい][いいえ]
> LET MB_RETRYCANCEL=00000005 ![再試行][キャンセル]
>
> !定数名 値 ボタンの種類
> !IDOK= 1 !OK
> !IDCANCEL= 2 !キャンセル
> !IDABORT= 3 !中止
> !IDRETRY= 4 !再試行
> !IDIGNORE= 5 !無視
> !IDYES= 6 !はい
> !IDNO= 7 !いいえ
>
> !定数名 値 アイコンの種類
> LET MB_ICONSTOP=16 !0x00000010 停止のアイコン
> LET MB_ICONQUESTION=32 !0x00000020 疑問符のアイコン
> LET MB_ICONEXCLAMATION=48 !0x00000030 感嘆符のアイコン
> LET MB_ICONINFORMATION=64 !0x00000040 吹き出しに「i」のアイコン
> LET MESSAGEBOX=MESSBOX(0,M$,"BASIC",BITOR(MB_OKCANCEL,MB_ICONEXCLAMATION))
> END FUNCTION
>
> EXTERNAL FUNCTION MESSBOX(OWNER,TEXT$,CAPTION$,FLAG)
> ASSIGN "user32.dll","MessageBoxA"
> END FUNCTION
>
> -----------------------------------------------------
> 下記の実行順もおかしい
>
> FOR I=1 TO 3
> LOCATE CHOICE:A
> PRINT I;":";
> PRINT A
> NEXT I
> END
> ------------------------------------------------------
> 下記の実行順もおかしい
>
> FOR I=1 TO 3
> PRINT I;":";
> LOCATE VALUE ,RANGE 0 TO 100:A
> PRINT A
> NEXT I
> END
>
> 別ウィンドゥを出して繰り返すと実行順が狂うようです
>
>
|
|
|
戻る