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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0210
ポテト(流星群)HSPの追加機能求ム19解決


ポテト(流星群)

リンク

2014/2/10(Mon) 21:42:47|NO.59837

HSPがちょっと力不足と感じることが多いけど便利だから追加してほしいなー(チラッ
チラチラッってやつです。
出来たら折角だしモジュール機能中途半端だから
クラスもどきでオブジェクヨシヨウプヨグヤミング出来るようにしたり
構造体的ななにか欲しいなー。
あと出来ればevalが欲しいです…こっちめっちゃ切実ですお願いします…



この記事に返信する


check

リンク

2014/2/10(Mon) 22:46:58|NO.59844

コンパイル後は変数名のデータは全てなくなるから、
HSPの仕様的にevalは難しいんじゃないかな。



Tetr@pod

リンク

2014/2/10(Mon) 23:25:26|NO.59857

evalで何をするのかによっては、今ある機能でできるかも?
もし、 evalのためならなんだってできるぜ! とお考えなら、
http://dev.onionsoft.net/trac/
へアクセスして、evalが使えるようにすることができるかもしれません。。。



KA

リンク

2014/2/11(Tue) 05:55:19|NO.59867

言いたい事は何となく分かるけど、もう少し真面目に書いた方が良いと思う。



Tetr@pod

リンク

2014/2/11(Tue) 12:40:50|NO.59875

すいません、ふざけすぎました。


// HSPでevalっぽいの by Tetr@pod // eval "ソースコード" // でソースコードを実行します。 // 戻り値が0なら正常終了で、それ以外ならエラーが発生したことを示します。 // 実行時エラーの際戻り値が0になるのは、仕様です。 #ifndef mod_eval #cmpopt varname 1 #ifndef EVAL_TEMPSOURCE #define EVAL_TEMPSOURCE "eval_tmp.hsp" #endif #ifndef EVAL_TEMPOBJFILE #define EVAL_TEMPOBJFILE "eval_tmp.ax" #endif #ifndef EVAL_TEMPVARFILE #define EVAL_TEMPVARFILE "eval_tmp.var" #endif #module mod_eval #uselib "hspda.dll" #func _eval_vsave vsave $202 #func _eval_vload vload $202 #uselib "hspcmp.dll" #func _eval_hsc_ini hsc_ini 6 #func _eval_hsc_objname hsc_objname 6 #func _eval_hsc_comp "_hsc_comp@16" int, int, int, int #func _eval_hsc_bye hsc_bye $100 #uselib "hsp3imp.dll" #func _eval_hspini hspini 0 #func _eval_hspbye hspbye 0 #func _eval_hspprm hspprm 0 #func _eval_hspexec hspexec 0 #deffunc eval str e, local fname, local temp, local s _eval_vsave EVAL_TEMPVARFILE@ sdim temp notesel temp temp = "#cmpopt varname 1\n#uselib \"hspda.dll\"\n#func _eval_vsave vsave $202\n#func _eval_vload vload $202\n#undef end\n#define end(%1=1) if %1{_eval_vsave\"" + EVAL_TEMPVARFILE@ + "\"}end@hsp\n_eval_vload\"" + EVAL_TEMPVARFILE@ + "\"\n" + e + "\nend" notesave EVAL_TEMPSOURCE@ sdim temp noteunsel _eval_hsc_ini EVAL_TEMPSOURCE@ _eval_hsc_objname EVAL_TEMPOBJFILE@ _eval_hsc_comp 0 if stat { delete EVAL_TEMPSOURCE@ delete EVAL_TEMPVARFILE@ return -1 } _eval_hsc_bye delete EVAL_TEMPSOURCE@ fname = EVAL_TEMPOBJFILE@ _eval_hspprm 0, 0, 0, 0 _eval_hspprm $102, 0, 0, varptr(fname) _eval_hspini $101, ginfo(26), ginfo(27), hwnd if stat { delete EVAL_TEMPOBJFILE@ delete EVAL_TEMPVARFILE@ return -2 } _eval_hspexec _eval_hspbye delete EVAL_TEMPOBJFILE@ _eval_vload EVAL_TEMPVARFILE@ delete EVAL_TEMPVARFILE@ return stat #global #endif // #if 0を#if 1にするとサンプルが動きます #if 0 // 普通のコード a = "abc" eval "dialog a : a = 123" mes "STAT=" + stat mes a mes wait 100 // コンパイルエラーになるコード eval "error" mes "STAT=" + stat mes a mes wait 100 // 実行時エラーになるコード eval "a = 1 / 0" mes "STAT=" + stat mes a mes #endif

上のコードの #if 0 を #if 1 にするとサンプルが動きます。



Tetr@pod

リンク

2014/2/11(Tue) 12:46:47|NO.59877

あ、hspda.dllとhspcmp.dllとhsp3imp.dllの3つが必要です。
標準ライブラリなのでエディタ実行時は問題ないのですが、
実行ファイルにする際はEXEと同じディレクトリに置いておく
必要がありますのでご注意ください。

また、実行時には一時的に3つファイルを作成します。
(変数データ、OBJファイル、ソースコード)
自動で削除されますが、変数データがまるごと保存される
ファイルもありますので、その点も留意しておいてください。



Tetr@pod

リンク

2014/2/11(Tue) 13:00:18|NO.59880

もう一個忘れてた。
evalを終了する際には、end命令を使用してください。
stopを使用するとevalが永遠に終わりません。
また、end 0と記述すると変数に加えた変更を破棄します。
(つまり、最初の変数の内容を保ちます)



Tetr@pod

リンク

2014/2/11(Tue) 13:31:46|NO.59882

訂正。

_eval_hspini $101, ginfo(26), ginfo(27), hwnd


_eval_hspini $1, 640, 480, 0



ポテト(流星群)

リンク

2014/2/11(Tue) 16:04:32|NO.59890

おお、一日経過して見てみたらevalっぽいのが!

使ってみよ。
イソイソ…



ポテト(流星群)

リンク

2014/2/11(Tue) 16:06:16|NO.59891

連レススマソ
確かに真面目に書いたほうが良かったな…



skyblue

リンク

2014/2/14(Fri) 07:09:02|NO.59937

似たようなのが不定期に現れていますね。
自分は構造体かな。



check

リンク

2014/2/14(Fri) 10:39:14|NO.59938

>似たようなのが不定期に現れていますね。
ということは、前々からHSPの機能に足りない点があると思っている人がいて、
なかなかその解決の糸口が見つかってないことなのかもしれない。

構造体は俺も欲しいけど、きっとOpenHSPの人々は、
HSPDishやHGIMG4の開発で手一杯なんじゃないか。

後は標準でOGGファイルの再生の機能が欲しいな。
MP3よりもOGGファイルの方が特許的にもフリーだから。
HSPDish使っているとサウンド再生面でのHSPの機能が弱いと感じる。
ループポイントを設定できない点等。



ポテト(流星群)

リンク

2014/2/14(Fri) 12:57:26|NO.59941

割りと前からこういうスレ立ってて切実だからまた建ててみた感じです。
Cをもっと触れるならOpenHSPの方を弄るんだけどねぇ…



玄冬

リンク

2014/2/14(Fri) 14:43:47|NO.59943

ここはhspに追加してほしい機能を要望する
スレッドということでよろしいでしょうか?

でしたら、私からも一つ。

cntをループレベルを添字にした配列にしてほしいと思います。
↓のような感じで

#undef cnt #undef repeat #define ctype cnt(%1=looplev) a_list(%1) #define repeat(%1) repeat@hsp %1 %c cnt(looplev) = cnt@hsp repeat 4 repeat 5 mes "" + cnt(looplev - 1) + " : " +cnt() loop mes loop

さらに一番良く使うであろうcnt(looplev)については、
省略してcntと表記できると、互換性や記述性も良く
なるのでは?と思います。
(
このスクリプトではcnt()
までは省略出来ますが、
()も省略したいです。
)



arx

リンク

2014/2/14(Fri) 16:42:58|NO.59948

同じ話題が繰り返されるのは、要望やバグといった案件単位のフィードバックが
オープンな形で蓄積管理されていないからだと思います。
この掲示板の目的はユーザー間のサポートコミュニティであって開発管理が目的ではないから、
質問や雑談に混じって重要な案件が挙がってもあっという間にログに埋もれてしまう。
要望や不具合、あるいは初心者が使う上で何に躓いているのか?
そういったフィードバックを簡易な手段でフィルタリングできればこの掲示板も使えるかもしれませんが、
ユーザーと開発者双方の手間を減らす意味でやはりバグトラックが必須でしょう。



skyblue

リンク

2014/2/14(Fri) 19:32:22|NO.59951

バグトラックはあったと思いますけど。



arx

リンク

2014/2/14(Fri) 20:14:52|NO.59952

> バグトラックはあったと思いますけど。

http://quasiquote.org/hspbt/
のことだと思いますが、随分前から500エラーのまま放置された状態です。



(’’

リンク

2014/2/14(Fri) 21:17:48|NO.59954

要望とかって大きい所はどう処理してるのでしょうかねぇ

・全無視してわかってる人が便利そうな機能をつけていく
・リソースを裂き大規模に処理してひたすらグループ分けしていく

これくらいしか思いつきませんが


evalはHSPではないものを作りにいくレベルでようやく実装できるかと思いますが…どうなんでしょうね
希薄レベルかつ投げっぱなしの要望が多発している以上、要望を聞いてもらうのは無理なんじゃないでしょうか



arx

リンク

2014/2/14(Fri) 23:45:19|NO.59961

フィードバックを無視ということは無いでしょう。
発生し得る条件を全て網羅したテストなんてまず不可能なので、
様々なフィードバックは開発側にとってとても有難い情報です。
要望のコミットは、svnのような集中管理なら最終的には著作権者や中心人物の判断になるし、
gitのように個々が自分のブランチを持つ分散管理なら自分で好きにコミットする形ですね。



おにたま(管理人)

リンク

2014/2/14(Fri) 23:47:55|NO.59964

HSPについての要望、ご意見ありがとうございます。
いままで設置頂いていたHSP Bug Trackにつきましては、現在接続ができなくなっているため、新規のバグトラッキングシステムを設置する予定です。
今後の機能追加要望など、多くの人に有用と思われるものについては、
優先度をつけながら管理しているほか、掲示板でのご意見要望なども、すべてに
返信することはできていませんが、ひと通り読ませて頂いて参考にしていますので、今後とも宜しくお願いします。



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