HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0825
ぱきお「代入できない変数名を指定しました」エラー3解決


ぱきお

リンク

2006/8/25(Fri) 14:45:04|NO.2137

はじめまして。

以下のようなコードで始まるソースがあります。
もともとHSP2.61で作成し、正常に動いていたところを、
HSP3で作り直そうとしています。
具体的には、mmload、mmplayによる効果音を追加しました。

実行したところ、「mmload "dame.mp3",2,0」の行で
「代入できない変数名を指定しました」エラーが出ました。
"dame.mp3"が予約語???と思い、とりいそぎ該当行を
コメントアウト(;)したところ、上の行で同じエラーが発生しました。
さらにその行をコメントアウトすると上の行がエラー…といった具合に、
コメントアウトを増やしていくと
cls、screen、randomizeなどの行でもエラーが出ます。

今回HSP2.6から追加したmmload、mmplayの行をすべて元通りに削除しても
エラーになります。

どなたか、心当たりありましたらご助言をよろしくお願いいたします。


;コメント ;コメント ;コメント #pack "doki.mp3" #pack "pin1a.mp3" #pack "dame.mp3" title "タイトル" *r_top screen 0,730,470,4,100,100 cls 0 dim am,120 randomize objsize 20,20 mmload "doki.mp3",0,0 mmload "pin1a.mp3",1,0 mmload "dame.mp3",2,0 ;コメント  : (以下略)



この記事に返信する


Steep

リンク

2006/8/25(Fri) 15:11:49|NO.2138

(以下略)の部分に問題があるような。



Irisawa

リンク

2006/8/25(Fri) 15:14:25|NO.2139

まず、18 "代入できない変数名を指定しています"で一番よくあるのはHSP3で関数化した
ものを以前の形式のまま(命令語として)使用した場合です。
これに関してはHSP3.1 beta4辺りからより明確なエラーメッセージに変更されています。
(->41 関数を命令として記述しています)

また、このエラーメッセージは#defineで命令や関数を置き換えしているものを使用した
場合などにもでる可能性があります。

なお、以前の投稿にもありますがHSPは実際のエラー行と報告されるエラー行がずれることが
よくあります。
(プリプロセッサやコメントなどの記述により一部正確な行番号を取得できなくなっている
ようです)

そのため、エラーが出た場合は表示されたエラー行ばかりではなくその前後の行もよく
見てください。
この場合、エラーとして表示された行以降が書かれていないので明確に指摘はできませんが
17行目でrandomizeを使っていることからその下辺りでrnd関数を命令として記述して
いませんか?



ぱきお

リンク

2006/8/25(Fri) 15:59:40|NO.2145

迅速なご回答ありがごうございます!

Steepさんのおっしゃるとおり、(以下略)部分に問題があり、
Irisawaさんのおっしゃるとおり、rnd関数をHSP2.x形式(rnd 変数,乱数)で
記述していました。それをHSP3形式にしたところ、ソースは問題なく実行できました。

HSP2とHSP3で高い互換性がある、と思い込んでしまい、
ソースの見直しを怠っていました。
「実際のエラー行と報告されるエラー行がずれることがよくある」は勉強になりました。

誠にありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.