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


HSPTV!掲示板


未解決 解決 停止 削除要請

2023
1108
大富豪ジャンプ元のボタンラベル取得7解決


大富豪

リンク

2023/11/8(Wed) 14:40:10|NO.100452

度々お世話になります。

表題の通りですが、

※どのボタンからジャンプしてきたか、
ボタン名をジャンプ先で取得したいです。

a="001\n002\n003\n004";...\n020...
;数字が順序通りになっていますが実際はバラバラで、
;行数もランダムです。

notesel a
repeat notemax
noteget xb,xs
button goto ""+xb+"",*STA:id(notemax)=stat
;mes xb
xs+=1
wait 10
loop
stop

*STA
mes xb

;※どのボタンから飛んできたか。
;ボタンの名前(xb)を取得したいです。
;(fileloadなどでボタンの名前をそのままファイル名として使いたい)
stop


色々試行錯誤してますが、
難しく考え過ぎなんでしょうね・・・、
どうもうまくいきません;
宜しくお願いします。



この記事に返信する


buhio

リンク

2023/11/8(Wed) 15:27:53|NO.100453

どもども。文字列型2次元配列にして検索するようにしてみました。


a="001\n002\n003\n004";...\n020... ;数字が順序通りになっていますが実際はバラバラで、 ;行数もランダムです。 notesel a sdim str_list,,notemax,2;←追加 repeat notemax noteget xb,xs button goto ""+xb+"",*STA str_list(xs,0)=str(stat);←変更 str_list(xs,1)=str(xb) ;←変更 xs+=1 wait 10 loop stop *STA repeat length(str_list) if str(stat)=str_list(cnt,0){ mes str_list(cnt,1) break } loop ;※どのボタンから飛んできたか。 ;ボタンの名前(xb)を取得したいです。 ;(fileloadなどでボタンの名前をそのままファイル名として使いたい) stop



大富豪

リンク

2023/11/8(Wed) 16:20:30|NO.100454

>buhioさん
ご対応頂きありがとうございます。

単にコピペで使うのではなく、なるべく
仕組みを理解してから使おうといつも思っているのですが、
ジャンプ後のループ内の仕組みが・・・@@;

2次元配列で文字列とインデックス番号を紐付け、
という感じですよね。length関数は初めて見ました。

※a="001\n002\n003\n004";...\n020...
これがアルファベットの文字列の場合はどうなるか、

※例えば noteload "”+filename+"",p1とか、
ひとつの変数としてループから引き出す(?)にはどうすればいいか、
(単一の変数として扱うには)

もしお手数でなければご教示お願いしたいです;



大富豪

リンク

2023/11/8(Wed) 17:48:44|NO.100457

>buhioさん
ありがとうございます。

repeat内を以下のように置き換えると、
偶然かもしれませんが@@;
出来たような(?)気がします、


repeat length(str_list)
if str(stat)=str_list(cnt,0){
v=cnt-1
;mes str_list(cnt,1):wait 1
break
}
loop

Xm2=str_list(v+1,1)
title ""+Xm2+""

stop

まだ仕組みを理解しきれていませんが;



buhio

リンク

2023/11/8(Wed) 20:31:37|NO.100460

注釈入れてみました🐷


;=================================================================================== ;メインプログラム a="001\n002\nあああ\nABCD";...\n020... ;数字が順序通りになっていますが実際はバラバラで、 ;行数もランダムです。 notesel a sdim str_list,,notemax,2;文字列型の2次元配列をnotemax個確保 repeat notemax ;noteの行数だけ繰り返す noteget xb,cnt ;cntはシステム変数で、repeat内で自動的にインクリメント(+1)してくれる button goto ""+xb+"",*STA str_list(cnt,0)=str(stat) ;配列(cnt行の1列目)にIDを文字列で保存 str_list(cnt,1)=str(xb) ;配列(cnt行の2列目)に名称を文字列で保存 ;xs+=1⇒cntに置き換えたので削除 wait 10 loop stop ;=================================================================================== ;ラベル *STA ;押したボタンのIDがstatに入る repeat length(str_list) ;配列の1列目の個数を数える⇒総当たりでチェック if str(stat)=str_list(cnt,0){ ;もし"statの値"が配列の1列目のcnt行の値と同じなら Xm2=str_list(cnt,1) ;変数Xm2に配列の2列目のcnt行の値を代入 ;mes str_list(cnt,1) ; break ;検索ヒットしたので、breakでrepeatを終了 } loop title ""+Xm2+"" ;タイトルに変数Xm2の内容を表示 stop ;※どのボタンから飛んできたか。 ;ボタンの名前(xb)を取得したいです。 ;(fileloadなどでボタンの名前をそのままファイル名として使いたい)



大富豪

リンク

2023/11/9(Thu) 04:10:53|NO.100468

>buhioさん
ご解説ありがとうございます、
なんとなく分かりました。

一旦自分の解釈でジャンプ先を以下のようにしたのですが、
勘違いとか特に問題はないでしょうか。

repeat length(str_list)
if str(stat)=str_list(cnt,0){

v=cnt-1 ; ←※
;mes str_list(cnt,1):wait 1

break
}
loop

Xm2=str_list(v+1,1) ; ←※
title ""+Xm2+""

stop



buhio

リンク

2023/11/9(Thu) 13:56:35|NO.100475

v=cnt-1 ; ←※

Xm2=str_list(v+1,1) ; ←※  cnt-1して、v+1 ⇒元のcntに戻ってる

よって、v=cnt で、よいのではないでしょうか?

cntにしろ、配列にしろ、0から始まるので、10個というのは0〜9までの数値で表されます。



大富豪

リンク

2023/11/9(Thu) 14:23:57|NO.100476

>buhioさん
たしかに・・・。

ご提示頂いたスクリプトの仕組みを
まだよく分かってないかと思いますので、
もう一度よく勉強します;
色々ご対応頂きありがとうございました。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.100452への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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