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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0725
KENTA命令のパラメータ省略4解決


KENTA

リンク

2007/7/25(Wed) 14:04:22|NO.9726

circleのp5は、省略すると1になるじゃないですか。
このように、省略したことを取得する方法はありますか?



この記事に返信する


f

リンク

2007/7/25(Wed) 15:04:02|NO.9728

ぶっちゃけ、HSP上では「パラメタが省略されたかどうか」は判定できないんでね?
詳しく調べた訳でもないけど。

たとえばプラグインで新規命令なり関数なり作る時は

引数1 = code_getdi( デフォルトの値 );
引数2 = code_getdi( デフォルトの値 );

のようにして引数を取得しているわけだが、この関数は「引数が無かったら指定の
デフォルト値を使う」ようになっている。
だから、プラグインを作る時は特に「引数が指定されていなかったら別の処理をする」
と意図して作らない。

実際に値が有ったのかどうかの判定はこの関数の向こうの話になる。

で、要するに、この関数が「引数が有ったか無かったか」を、いちいち記録しているとは思えない訳で。
まあ、最初にも言ったが、詳しく調べた訳ではないけど。



KENTA

リンク

2007/7/25(Wed) 16:07:17|NO.9729

分かりました。解決しました。
回答ありがとうございます。



eller

リンク

2007/7/25(Wed) 16:29:51|NO.9731

解決後ではありますが、ちょっと遠回りかつ不完全な方法を載せておきます。
#defineを利用して省略時に既定値を代入する方法です。


#module #deffunc _my_cmd str p1 mes "my_cmdの第1引数は " + p1 return #defcfunc _my_func int p1 if ( p1 == -1 ) : return "my_funcの第1引数は 省略されました" return "my_funcの第1引数は " + p1 #global #define my_cmd( %1 = "省略されました" ) _my_cmd %1 #define ctype my_func( %1 = -1 ) _my_func( %1 ) my_cmd "ああああ" mes my_func( 10 ) my_cmd mes my_func()

「my_cmd "省略されました"」と「my_cmd」、「my_func( -1 )」と「my_func()」の見分けはつきませんが、場合によっては充分ではないでしょうか。



KENTA

リンク

2007/7/25(Wed) 19:03:44|NO.9735

そんな方法でできるんですか・・・。
参考にさせていただきます。



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