コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
しんいち ◆lHy.hAWXbthn
2017/12/24 2:23
情報交換
最も恐ろしいエラー
それは
ELSE without ENDIF in 0:3431
である。
やば〜い、どこだか分かんねぇ〜TT

コメント

アバター
こういち 2017/12/24 9:11 ◆ou0jbJnEJ0Kb
インデントを頼りに探すのです。
アバター
みなつ 2017/12/24 17:04 ◆hJTkStjweib1
お・・・恐ろしい(((( ;゚д゚)))アワワワワ
探すのめんどくさいですにゃ_(:3」∠)_
アバター
しんいち 2017/12/24 19:08 ◆lHy.hAWXbthn
実際にENDIFが抜けていたのは759行目でした。見つかって良かった(^o^)
調子良い時に調子にのってイッキにコーディングを進めていると時々このエラーに遭遇しちゃいます。こまめにRUNが対策か。
アバター
おちゃめ 2017/12/24 20:49 ◆jH1opV6FnGyx
どうしても見つからない場合はエラー箇所発見プログラム(今回の場合だとそのELSEに対応したIFを発見するプログラム)を作るのが逆に早かったりします。
私はそんな規模のプログラムは作らないので必要がありませんが。
アバター
2017/12/24 20:57 ◆VprVkPH7pmk2
>>おちゃめさん
そしてそのプログラムを作る時にもELSE without ENDIFが発生するんですね分かります。
アバター
たんじぇ 2017/12/25 10:32 ◆WDmFkVwZ4yMl
対応する命令は先に一緒に書いてしまう、ってのを実戦するとエラーを抑えられるのでオススメ。
IF書いたら THEN -ENDIFを書いておくし、
最初っからELSEしたいなら IF-THEN-ELSE-ENDIFまで書いておくし。
WHILE書いたらWENDも書いておくし、DEF書いたらENDも書いておく。

プチコン以外でも「(」や「{」を書いたら絶対に「)」や「}」も書いておくってことができるのです。

プログラムには直接かかわらないところだけど、自分なりにプログラムはこうやって書くってのを決めておくと、バグ防止としていろいろと楽になりますよ。
アバター
キルル2 2017/12/25 20:49 ◆rGE712Ruejv7
3431行目にENDIFと書けば良いだけでは
アバター
しんいち 2017/12/26 23:21 ◆lHy.hAWXbthn
>たんじぇさん
私も大体のものは先に終わり(RETURNとかUNTILとか)を書いとくんですが、ENDIFはあまり先に書かないことが多くて、IF文1行で書いてしまって省略することもしょっちゅうです。必ずENDIFを書くことにすればより安全なんでしょうけどね。書かなくて済むものは書かないってスタイルが身に付いてしまって^^;
viみたいに%で{}の対応が分かるように、IF/ENDIFの対応が分かれば便利なのにと思ったりしますが、今ではすっかりプチコンのエディタに慣れてしまって、viの操作おぼつかなくなってるような気がする。

>キルル2さん
一瞬、それで良いかと思っちゃいましたww

そして、さっきため息の出たエラー
Illegal function call in CHKFILE
CHKFILEって、ファイル名として渡す文字列がファイル命名規則に則ってないとエラーでプログラム止まっちゃうんですね。おとなしくFALSE返してくれるだけで良いのに(-_-;)。CHKFILEの前に自前でファイル名チェックしなきゃならないのか。って何だかアホらしい。CHKFILEのためにファイル名チェック、何のためのCHKFILE?:-p
アバター
おちゃめ 2017/12/27 1:17 ◆jH1opV6FnGyx
エラーで止まらないようにするため自前でファイル名チェックは誰もが通る道ですね。
というわけで、プチコン3号が発売されてすぐの頃に作った自作関数CHKNAMEです。
アバター
はる 2017/12/27 8:03 ◆75Vh4SY8TdKS
そんなに長いプログラム書くんですね。
自分はプログラムが長くなるとややこしくてやる気がなくなります。
(そういうエラーのこともあって)
Pythonならインデントを書くだけでいいのでそういうエラーの心配はないんですけど。

CHKFILEのことは、自分は別にそれでいいと思っています。
ファイル名チェックのプログラムを作れば解決するので。

ファイル名チェックで思い出したんですが、
昔プチコンのバグでファイル名が文字化けして、
ファイル名に使えない文字まで使えてしまうバグがありましたね。
(画像のような感じ)
あのときに自分は文字化けの規則を見つけようとしました。
見つける前に修正されましたが。
アバター
しんいち 2017/12/27 18:15 ◆lHy.hAWXbthn
>おちゃめさん
やはりCHKFILEのエラー回避は誰もが通る道だったんですね。そんな気がしてました。そして私も前に通ってたような気がするようなしないような。ちゃんと覚えとこう^^;
今回私も似たようなチェック関数作りました。ファイル名ルールはファイル名入力DIALOGのキーボードから推測。小文字は無くても良いのか。

>はるさん
長いプログラムも、短いプログラムが集まっただけと考えるとややこしくないかも。まぁ、その短いプログラムが部品としてちゃんと機能する(悪さしない)ことに気を付けなきゃならないのが大変なところですけど。
Pythonはインデントに構文としての意味を持たせてる?そういう言語もあるんですね。
SmileBASICはIF文のSyntaxがややこしいというのが個人的感想。ENDIFは1行で記述すれば省略可能だけど、ELSEIFでは省略不可とか。
アバター
みどり 2018/8/17 13:36 ◆UuFOYlGswjhS
LIST ERRでエラー箇所に行けます。
アバター
しんいち 2018/8/17 23:28 ◆lHy.hAWXbthn
そうですね。大抵の場合はエラーメッセージで示された行に問題があるので、LIST ERRでその行に跳べばエラー原因はすぐ分かることが多いですが、ENDIFを忘れた場合、エラーメッセージで示された行に問題がある訳ではなく、それよりもずっと前の行に問題があることがほとんどなので、エラー箇所を特定するのが難しくなってしまいます。
アバター
こういち 2018/8/18 5:40 ◆ou0jbJnEJ0Kb
結局エラーが出るだけましなんですよね。
この世でメモリリークほど恐ろしいものはない。

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -