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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0504
LuLullmod3のlistview/treeboxについて5未解決


LuLu

リンク

2013/5/4(Sat) 08:04:53|NO.53786

llmod3について質問と確認です。

listget のサンプルに手を加えたスクリプト。
(ちなみに、listget のサンプルをそのまま実行するとエラーが出ます。たぶん)

#include "llmod3/llmod3.hsp" #include "llmod3/img.hsp" #include "llmod3/listview.hsp" listview ginfo_winx-6, ginfo_winy/2, 1 lv = stat listaddcl 0, "name" repeat 30 listadd cnt, "アイテム No."+cnt loop button "check", *check alloc bf, 1024*32 bf = "" mesbox bf, ginfo_winx-6, ginfo_winy-ginfo_cy-26 mb_id = stat _objsel lv stop *check bf = "" notesel bf start = -1 ;先頭から検索 repeat -1 listget chk, start, 0, 2 ;選択状態のアイテムを探す if chk = -1 : break ;見つからない場合-1が代入される listget s, chk, 5 ;見つかったアイテムのテキストを取得 noteadd ""+ s +"は選択されています" start = chk loop objprm mb_id, bf stop

listviewのアイテムテキストを取得したいと思っているのですが、
実行すると数字の数値が取得されます。どれを選んでも変化しません。
何か変換処理が必要なのでしょうか?
それとも、アイテムテキストって別の何か示してますか?
(treeboxの treeget も同じ結果になります)

------

treeboxの treeget 、-1 ルートを取得 とは
どういった結果が得られるのが正しいのでしょうか?
こちらも数字が得られるのですが……

------

回答お待ちしています。



この記事に返信する


どこぞのだれか

リンク

2013/5/4(Sat) 09:27:52|NO.53788

listget s, chk, 5 の前に
sdim s で文字列型に初期化。

treeget も同様に。



y.tack

リンク

2013/5/4(Sat) 10:10:36|NO.53789

なんか前にもllmod3の中の命令が動かないって書いてましたよね
僕も以前strtointが動かなくてググッてAPI使いました

以下、ほぼサンプルスクリプトより

#include "llmod3/llmod3.hsp" #include "llmod3/misc.hsp" strtoint "111101",2 ;2進数とみなして変換 mes stat ; 結果:0 変換されてない strtoint "0x1F" ;先頭が"0x"だと16進数とみなされる(Base省略時) mes stat ; 結果:0 変換されてない strtoint "0376" ;先頭が"0"だと8進数とみなされる(Base省略時) mes stat ; 結果:0 変換されてない strtoint "23413",7 ;7進数とみなして変換 mes stat ; 結果:0 変換されてない strtoint "za",36 ;36進数とみなして変換 mes stat ; 結果:0 変換されてない stop
なんか一回全部llmod3の命令は動作確認した方がいいかもしれません
とはいえ、僕もサンプルスクリプトだけでも動作確認しようかな?と思いましたが
ちゃんと命令のHELPを読んでどんな動作を期待したサンプルスクリプトなのか理解しなきゃいけない気がしてやめました
llmod3の命令は80個もありますし
皆でやろう。だなんて僕が言っても仕方ないし
現状ではllmod3の命令で動作しない命令が数個報告されていることを頭に入れて
他の方法を探すことも視野に入れるくらいでしょうか



LuLu

リンク

2013/5/4(Sat) 10:56:53|NO.53790

>どこぞのだれか さん
回答ありがとうございます。確認出来ました。

文字列が代入されるはずと認識していたのに……初期化って大切ですね。
つい、初期化とか変数宣言を省いてしまいます。これからは気を付けます。

-----

> treeboxの treeget 、-1 ルートを取得

#include "llmod3/llmod3.hsp" #include "llmod3/img.hsp" #include "llmod3/treebox.hsp" style=1|2|4|$20 treebox ginfo_winx-6, ginfo_winy/2, style tb_id = stat treeadd 0, "test1" itm0 = stat treeadd 0, "test2" itm1 = stat repeat 10 treeadd itm0, "test1`s child "+cnt loop if all_test : treeadd itm0, "test1`s child (goto next)" : gt_nxt=stat button "check", *check alloc bf, 1024*32 bf = "" mesbox bf, ginfo_winx-6, ginfo_winy-ginfo_cy-26 mb_id = stat _objsel tree_id stop *check bf = "" notesel bf itm_Text = "" // itm_root = "" treeget itm treeget itm_Text, 6, itm ; 6 アイテムのテキスト取得 noteadd itm_Text treeget itm_root, -1 ; -1 ルートを取得 // noteadd itm_root // noteadd str(itm_root) objprm mb_id, bf stop
こちらは初期化で解決出来ませんでした。
文字列ではなく数値が返されるみたいで、「パラメータの型が違う」とエラーです。
初期化してstrにしてもintに戻る……。とんちんかんなことしてますか?

引き続き回答お待ちしてます。



LuLu

リンク

2013/5/4(Sat) 11:49:31|NO.53791

>y.tack さん
> サンプルについて - HSPTV!掲示板
> http://hsp.tv/play/pforum.php?mode=all&num=52868
こちらですね。HSP3.4β1で修正されたみたいですが。

気合い入れて挑めばAPIという選択肢もありますから、利用者少ないのでしょうかね?
そういう私は、この修正で llmod3 に気づきました。

-----

こんな基本的な質問している知識も技術もない者が、
なんとなくサンプルだけざっくり試して気になったところを上げてみました。
y.tack さんの
> ちゃんと命令のHELPを読んでどんな動作を期待した > サンプルスクリプトなのか理解しなきゃいけない
という意見も確かですが、動作しないのもあるみたいなので。
すべてを確認したわけではありません。参考程度に見て頂けたらと思います。

---

リファレンス内サンプル _makewnd ※※ verinfo ※ error 7 : ラベル名はすでに使われています --> *get_verinfo // gosubのラベルにアスタリスクを付ける #Error 6 -->パラメータの型が違います s = windir + "\\system\\" + file  ↑を↓に変更 s = dir_win + "\\system32\\" + file // 当方のXP環境では C:\WINDOWS\system32 にありました 何も表示しませんでした winver ※※ btnimg ※※ #Error 3 in 65 (llmod3/misc.hsp) -->パラメータ値が異常です // モジュール内エラーのようなので調べてません listget ※ llmod3/listview.hsp(688) : error 2 : 文法が間違っています (688行目) // #include "llmod3/img.hsp" を追加 listview winx-6, winy/2, 1  ↑を↓に変更 listview ginfo_winx-6, ginfo_winy/2, 1 mesbox bf,winx-6,winy-csry-26  ↑を↓に変更 // csry はカレントでは無いかも mesbox bf, ginfo_winx-6, ginfo_winy-ginfo_cy-26 変数s を初期化 button に objprm で指定した内容が表示されるので、 mesboxのidを取得して、objprmの指定をする listicon ※ アイコン表示されません msgdlg ※※ multiopen ※※ error 4 : パラメーター式の記述が無効です notemax mx  ↑を↓に変更 mx = notemax error 4 : パラメーター式の記述が無効です if mx=1 : mes "拡張子は"+info : else mes "フォルダ "+info progset ※※ goto lp  ↑を↓に変更 goto *lp // そのまま実行すると、他の操作ができなくなりました // タスクマネージャーからプロセス終了させました resizeobj ※※ button "width*2", wx2 button "height*2", hx2  ↑を↓に変更 button "width*2", *wx2 button "height*2", *hx2 // 実行すると #Error 7 in 193 (llmod3/obj.hsp) -->配列の要素が無効です // モジュール内エラーのようなので調べてません strtoint ※※ 全部、0と表示されます tooltip ※※ button "test", label  ↑を↓に変更 button "test", *label treeicon ※ dd_accept ※ goto @b  ↑を↓に変更 goto *@b // sample\llmod3\test7.hsp はエラー無く動く dllproc ※※ imeinit ※ imeopen ※ imesend ※ imestr ※ mesbox buf, winx, winy, 1  ↑を↓に変更 mesbox buf, ginfo_winx, ginfo_winy, 1 keybd_event ※ #Error 41 -->関数を命令として記述しています。 (HSP2から関数化された名前を使用している可能性があります) strlen L,s  ↑を↓に変更 // 2カ所 L = strlen(s) peek c,s,cnt  ↑を↓に変更 // 2カ所 c = peek( s, cnt) linesel ※ mouse_event ※ error 8 : ラベル名は指定できません goto lp  ↑を↓に変更 goto *lp #Error 16 -->パラメータの数が多すぎます。 if kSHIFT : Lbtn=$2 : else : Lbtn=0 p_scrwnd ※※ #Error 41 -->関数を命令として記述しています。 (HSP2から関数化された名前を使用している可能性があります) // どうなればいいのか分からないので、確認出来ません selget ※ from_uni ※※ to_uni ※※ llmod3/unicode.hsp(120) : error 2 : 文法が間違っています (120行目)
---

サンプルスクリプト sample\llmod3\test2.hsp 49行目 正しく表示されません 変数txt を初期化 sample\llmod3\test3.hsp 35行目 文字列一行分足さないと「選択されたファイル数」がmesboxで隠れます sample\llmod3\test6.hsp mesbox内、3行目の「1234」は行変換で「んかくも」という文字に変換される 他は選択はされるが変換はされない
ところどころ、2.xでの記述があるようです。サンプルスクリプトの方も。

---

ついでに要望。

リファレンス内サンプルでインクルード記述が有ったり無かったりするのがあるので、
どちらかに統一して頂けると有り難いです。
そのままコピーして試すことを考えると、有ると良いのですが。

llmod3モジュールの場合、#include "llmod3.hsp" と表記されているのもあります。
#include "llmod3/llmod3.hsp" にして頂けると幸いです。
※印があるのは、"llmod3.hsp"表記されているサンプルです
※※印があるのは、インクルード記述がないサンプルです listadd treeadd を除く

リファレンス内のサンプルは、記述サンプルであって、
動作サンプルではないということでしたら無視してください。

-----

長い上に読みにくそう。後から編集できないのが困りますね。
偉そうに修正指摘してますが、あれやこれやと試してこうしたら動いたと言う感じです。
途中放棄してます。参考の参考の参考ぐらいでお願いします。
(放り投げるぐらいの気持ちで別スレ立てれば良かったかな?)



y.tack

リンク

2013/5/4(Sat) 17:06:55|NO.53794

>>LuLuさん
あまり考えず、llmod3の全ての命令を一回動作させてみる必要があります
とか書いてしまい申し訳ない
本当にほぼ全部サンプルスクリプトを検証するとは驚きました
動かないのをリストアップするなら動くのもリストアップしたらどうか?と思ったんですが
error情報書いてないのは動く命令なんですねって
こちらでもリストアップして気付きました

+/_makewnd -\ss_chgpwd -\ss_chkpwd -\ss_running +*verinfo +/winver -\_clrobj -\_cls -\_objsel +*btnimg -\getobjsize +*listadd -\listaddcl -\listdel -\listdelcl +*listget -\listhit +?listicon -\listmax -\listsel -\listview +/msgdlg +*multiopen -\objgray -\progrng +*progset +*resizeobj -\sel_listview -\sel_progbox -\sel_treebox +*strtoint +?tooltip +?treeadd -\treebox -\treedel -\treeget -\treehit +/treeicon -\treemax -\treesel -\treesort -\getptr -\console -\console_color -\console_end -\console_pos +?dd_accept -\gets -\puts -\sel_trackbox -\sel_udbtn -\trackbox -\trackmrk -\trackpos -\trackrng -\tracksel -\udbtn -\udget -\udset -\about -\dd_reject +/dllproc -\draw_icon -\get_fileicon -\get_icon +/imeinit +/imeopen +/imesend +/imestr +?keybd_event +/linesel +*mouse_event +*p_scrwnd +!p_wndscr error 2 : 文法が間違っています (3行目) --> p_wndscr x -progbox +/selget -\charlower -\charupper +/from_uni +*to_uni
一文字目の-はサンプルスクリプト無し
+はサンプルスクリプトあり
2文字目の¥はサンプルスクリプト無し
/はLuLuさんの環境では正常に動作
*はLuLuさんの環境ではerror
?は動作するか不明です

ってLuLuさんの情報におんぶにだっこな訳ですが

でもやっぱりサンプルスクリプトなし多いですねぇ
サンプルスクリプトがないと
正常な使い方ではないのか
バグで動かないのか
判別が困難そうで大変そうですね



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