投稿
自前のランチャーからスマイルツールを起動したらCOPY命令のとこでエラーが発生するようになってた。なんで?!?
2そうだね
プレイ済み
返信[1]
親投稿
誰か解決方法しりませんか〜!!? (質問タグをつけ忘れた…)
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
エラーメッセージと発生場所を提示して頂けると原因の 特定がしやすくなります。エラーメッセーハ確認出来ますか?
0そうだね
プレイ済み
返信[3]
親投稿
- nukenin
コピー元オフセット、コピー数を省略して書いていますか? 私も同じ症状が出ましたが、省略しなければ大丈夫でした。
0そうだね
プレイ済み
返信[4]
親投稿
エラーが出るのは飛び先のスマイルツール(公式)なんですよー。なので直せないという…。 でも直接起動なら大丈夫で、自作ランチャーからの起動だとエラーになるので、なんか原因や回避方法はないのかなぁ、っと思ってる感じです。作り始めの時は大丈夫だったんでいつからそうなっていたのかもわからず…。 ちなみにエラー名は、Undefined label in 4:23(COPY)です!
0そうだね
プレイ済み
返信[5]
親投稿
>あねさん そういうこともあるんですねー…。ただ呼び元のランチャーではCOPY命令は使ってないです。他に呼び元に対しての原因ってかんがえられることってありますかね?
0そうだね
プレイ済み
返信[6]
親投稿
- nukenin
undefined labelなら、USEを使っていないから利用可能になっていない、あるいはDEF内だから呼び出せない……くらいしか思い付きません。 お役に立てず、申し訳ないです。
0そうだね
プレイ済み
返信[7]
親投稿
>あねさん コメントありがとうございました! スマイルツールから起動しているランチャーからEXECで実行しているだけなんですが、ちょっとあねさんのコメントから気になったことがあってプログラムを修正してみました。 実はEXECを実行しているのはDEF関数内だったので、それを外に出して実行するようにロジックを変更してみたら…。エラーが発生しませんでした! まさかEXECの呼び出し先のラベルにも影響を与えるとは思わず…。ちょっとバグっぽい動作ではありますが、一応は解決出来た感じです。(たぶん) みなさんのコメントによって色々と考えることが出来て解決に導く事が出来ました。ありがとうございます!
0そうだね
プレイ済み
返信[8]
親投稿
けい kei0baisoku
でんぺんさんなら既に確認してそうですが、思い付く限り……… ・前は、事前に起動したプログラムの影響でラベルが有効だった ・前は、自作ツール内にたまたま同じラベルがあってエラーにならなかった うーん、このくらいです………(-ω-) スマイルツールもソースがあるので、多分、具体的なラベル名や、本来どこにあるのか等も既に確認されてるとは思いますが……… バックアップ辿っていつから発生したか確認………は出来ないですよね(´∀`;)
0そうだね
プレイ済み
返信[9]
親投稿
>けいさん コメントありがとうございます〜。 一応解決したと思います。(たぶん) DEF内の関数の二重定義といいDEFには魔物が住んでいるようです(^^; まあもしかしたら次回のバージョンアップでは直っているのかもしれないですけどね。なかなかにクリティカルなミスでした…
0そうだね
プレイ済み
返信[10]
親投稿
otta777 otta777a
自作ランチャーからの起動ということですが起動しているプログラムは SYS/SBSMILEですか? 自作ランチャーからはEXEC("SYS/SBSMILE")で起動していますか? SMILETOOLのプログラムを確認するとCOPY命令の数行前の ラベルを参照してるんで問題が有るようには感じませんでした。
0そうだね
プレイ済み
返信[11]
親投稿
>otta777さん 検証までしていただきありがとうございます。 呼び出し方自体は間違ってないようでした。(EXEC "SYS/SBSMILE"相当を変数を使って呼び出してますが) 僕もSMILETOOLのコードの方も確認しておかしいと思っていたんですが原因は上記の通りまったく違うところにありました…。 前はDEFを使ってないところから呼び出してたんですが、プログラムの整理の際にMAINルーチン(DEF)を作って、その中で処理をしていたのが原因だったみたいです。
0そうだね
プレイ済み
返信[12]
親投稿
けい kei0baisoku
あっ、既に解決してた(^O^) 良かったです。 原因、意味は分かりましたが意味が分かりませぬ………(-ω-) 関数内からグローバルラベルが参照出来ないのは障害情報にあったので更新で直る可能性が高いですが、関数の仕様がなかなか読めませんね………
0そうだね
プレイ済み
返信[13]
親投稿
>けいさん 解決しました〜。やっぱりこう言うときは色んな人に話を聞いてみるのが解決の糸口になりますね。一人で考えていたら結構ハマっていたかもしれません…。 正直これバグじゃない?って感じですよね(^^; 次回バージョンアップで直る確率がたかいと思うので、直ってればいいんですが、もし直ってなかったら不具合報告をあげた方がいいかなーって思いました。
1そうだね
プレイ済み
返信[14]
親投稿
けい kei0baisoku
よく見たらあねさんの「DEF内だから呼び出せない」って確信ついてますね(°ω°)トウシノウリョクカ 関数内でグローバル変数と同名の変数を定義できないのと、グローバルラベルを参照出来ないのは結構困ってます………(><) これのせいで、ゲームも初期化関数だけサブルーチン呼び出しで、ローカル変数が使えずに不便です………
0そうだね
プレイ済み
返信[15]
親投稿
>けいさん そうなんです。それがヒントになりました。 EXECの飛び先なので、そこまで影響が絡んでいるとは思ってもいず…。でも助かりました。 DEFは色々と問題が多いですよね〜。バージョンアップで解消されないと普通のDEFの使い方をするのも大変です…
0そうだね
プレイ済み
返信[16]
親投稿
otta777 otta777a
>でんぺんさん DEF~END内でEXECを使うことは想定外で思わぬ挙動をして いるような気がします。 個人的にはCan't Execute等のエラーを出して出来ない仕様に した方がいいとは思います。
0そうだね
プレイ済み
返信[17]
親投稿
>otta777 そうですね〜。でもそもそもEXECからは戻って来れない仕様(でしたよね?)なので、その辺うまく対応出来なかったのかなlって思います。 まあなんにしてもエラーなり対応するなりしないと意味不明な症状になっちゃいますからなんとかして欲しいですね。とりあえずバージョンアップでどうなってるかって感じですね。
0そうだね
プレイ済み
返信[18]
親投稿
otta777 otta777a
想像ですがDEF~END内でEXECによって別プログラムを起動した 場合、ユーザー命令・関数実行中フラグがリセットされていない ためにラベルの参照範囲が制限されてしまってundefined labelと なってしまったのかなと思いました。
1そうだね
プレイ済み