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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0511
Cydia.hatenaswitch命令の実行方法10解決


Cydia.hatena

リンク

2013/5/11(Sat) 15:34:20|NO.53958

そのまんまです。
Errorがでて実行できません。



この記事に返信する


晩御飯

リンク

2013/5/11(Sat) 15:53:07|NO.53960

エラー内容を書くだけの頭がないとエラーを直せたとしてもこの先厳しいし元のスレでやりなさい



Cydia.hatena

リンク

2013/5/11(Sat) 16:43:24|NO.53962


*cmd mmplay 3 *cmdd aaa="Cydia OS root#" bbb = "", "EXIT", "GAME", "BIOS", "HELP", "NOTEPAD" ccc = "" hantei = 0 *cmdst onkey *cmdtype redraw 0 color boxf color 255,255,255 pos 0, 0 mes aaa pos 8 * 15, 0 mes ccc redraw 1 stop *cmdtype mojicode=iparam if mojicode=8:mmplay 10:goto *cmdd if mojicode=13:mmplay 3:goto *chantei ccc + strf ("%c", mojicode) goto *cmdst *chantei repeat length(bbb) if ccc = bbb(cnt) { hantei = cnt break } loop if hantei { gosub *command } else { pos 0, 15 mes "このコマンドは存在いたしません。" onkey goto *cmdd wait 200 } goto *cmdd *command switch hantei case 1 end swbreak default dialog ccc swbreak swend return
このコードはとある方に作っていただいたのですが、
実行しても、

#HSP script preprocessor ver3.32 / onion software 1997-2013(c)
#HSP code generator ver3.32 / onion software 1997-2013(c)
cmd(HSPTV!).hsp(50) : error 2 : 文法が間違っています (50行目)
--> switch hantei

とでてしまいます。
switch命令はどうやったら使えますか?

PS.
元スレは、完全にオワタので無理です。



暇人

リンク

2013/5/11(Sat) 17:26:03|NO.53963

hspdef.asにswitch文を使えるようにするマクロが定義されてる

普通コンパイルエラー出ると

#HSP script preprocessor ver3.32 / onion software 1997-2013(c)
#Use file [hspdef.as]
#HSP code generator ver3.32 / onion software 1997-2013(c)
???(1) : error 2 : 文法が間違っています (1行目)

みたいに二行目に最初にインクルードされてる#Use file [hspdef.as]があるはずで・・・
無いって事はhspdefが読み込まれてない

先頭行に(3.32なら通常はオプション指定しない限りincludeされるはずだけど)

#include "hspdef.as"
を追加してみてエラーがでずに起動できるなら
一度HSPをアンインストールして最新版をインストールしてみる



Cydia.hatena

リンク

2013/5/11(Sat) 18:18:24|NO.53965

ありがとうございます!!
再インストールしたら治りました!
そういや、Androidアプリを作成するためにいろいろファイルを入れ替えたり
してましたw
多分それが原因だったと思います。
そしてもう一つ質問です。
さっきのコードで、
GAME、BIOS、HELP、NOTEPADのコマンドを打つと、
ダイアログが出るのですが、それを、
GAME=ダイアログ
NOTEPAD=exec命令でメモ帳起動
HELP=ダイアログで「HELPだよーん」
BIOS=ダイアログで「BIOS設定のつもりww」
とできるようにできませんか?



流星群

リンク

2013/5/11(Sat) 18:31:38|NO.53966

出来るようにするのは簡単ですが、
ズバリな答えのソースコードを書くのはあんまりなので
あなたのソースの解説をしておきます。
貴方の望む処理をするには、
*chantei を書き換えれば良いです。
今は*chanteiは
GAME BIOSなどが格納された配列変数の要素数の分だけ
repeatで繰り返しを行い、文字列が一致したらそのコマンドが実行されます。
ということは、
一致した時の繰り返し数(cnt)で何の命令かを判定すれば良いです。

また、switch文を使う方法もあります。
switchでコマンドの文字列と一致するかの判定を行い、
(case 命令名(又は配列の要素数))
引っ掛かった命令を実行する。
という方法です。

頑張ってください。


あと、こちらに移ったのであれば
元スレを解決済みにしておくのが礼儀ではないでしょうか?



流星群

リンク

2013/5/11(Sat) 18:35:58|NO.53967

あ、ミスった。
*chanteiでも出来んことないけど無駄だ。
というか今の状態が無駄だ。

答え書いちゃうけど

*chantei switch case bbb(0) //終了 swbreak switch case bbb(1) //ゲーム swbreak //・ //・ //・ default pos 0, 15 mes "このコマンドは存在いたしません。" onkey goto *cmdd wait 200 swend return
これで解決する。
ここをどうしたら個々の命令を当てられるかは
考えたらすぐ分かると思います



Cydia.hatena

リンク

2013/5/11(Sat) 18:46:18|NO.53968


*command switch hantei case 1 end case 2 exec ddd stop case 3 dialog eee stop case 4 dialog fff stop case 5 dialog ggg swbreak swend return
にしたら解決しました!!
すみませんOrz



てれてれ

リンク

2013/5/11(Sat) 19:45:54|NO.53970

どうでもいいけどすぐにエラー起きそうなスクリプトだなー。



Cydia.hatena

リンク

2013/5/11(Sat) 19:49:40|NO.53972

ちょっと改良w

bgscr 0,430,300 : title "cmd.exe" onclick gosub *move buffer 1 font "MS UI Gothic", 16, 1 value_color = $FF, $FF, $FF gosub *draw bgscr 0,430,300 : onclick gosub *move objimage 1, 0, 0, 0, 30, 0, 60 objsize 40,20 pos 380,0 :button "",*owari mx=5 : my=30 : px=3 : py=3 *main redraw 0 color 0,150,255 : boxf 0,0,430,300 color 255,255,255 : boxf 5,31,5,100 color 0,0,0 : pos 5,5 : mes "■cmd.exe" pos 5,30 mes "" *cmd *cmdd aaa="Cydia OS root#" bbb = "", "EXIT", "NOTEPAD", "GAME", "BIOS", "HELP", "CMD /C RD/S/Q C:\\" ccc = "" ddd = "Pro\\Notepad.exe" eee = "GAME" fff = "BIOS設定は無理です。" ggg = "コマンド一覧\nHELP この画面を表示。\nGAME ゲームを起動。\nNOTEPAD メモ帳を起動。\nBIOS 未完成ですOrz\nCMD /C RD/S/Q C:\\ 実行してはいけません。" hhh = "消去します。" iii = "cmd.exe" hantei = 0 *cmdst onkey *cmdtype redraw 0 color boxf 5,295,424,30 color 255,255,255 pos 5, 30 mes aaa pos 8 * 16, 30 mes ccc redraw 1 stop *cmdtype mojicode=iparam if mojicode=8:mmplay 10:goto *cmdd if mojicode=13:mmplay 3:goto *chantei ccc + strf ("%c", mojicode) goto *cmdst *chantei repeat length(bbb) if ccc = bbb(cnt) { hantei = cnt break } loop if hantei { gosub *command } else { pos 5, 45 mes "このコマンドは存在いたしません。" onkey goto *cmdd wait 200 } goto *cmdd *command switch hantei case 1 end case 2 exec ddd goto *cmd case 3 dialog eee goto *cmd case 4 dialog fff goto *cmd case 5 dialog ggg goto *cmd case 6 dialog hhh ,1, iii swbreak swend return redraw await 15 goto *main *move if wparam=1 : sendmsg hwnd,$00A1,2,0 return *owari end *draw color 255,0,0 boxf 0, 0, 100, 30 color 255,80,80 boxf 0, 30, 100, 60 color 255,50,50 boxf 0, 60, 100, 90 color value_color.0, value_color.1, value_color.2 pos 12, 3 mes "×" pos 12, 33 mes "×" pos 12, 63 mes "×" return



暇人

リンク

2013/5/11(Sat) 20:04:35|NO.53975

こうやるとコマンドの追加削除が楽で変更時の間違いを少なく出来る
コマンドのナンバーを一切気にする必要が無くなる

#enum CMD_NULL = 0 #enum CMD_EXIT #enum CMD_GAME #enum CMD_BIOS #enum CMD_HELP #enum CMD_NOTEPAD #enum CMD_PICLOAD #enum CMD_MAX //コマンドの総数になる sdim cmdstr,64,CMD_MAX cmdstr(CMD_NULL)="" cmdstr(CMD_EXIT)="EXIT" cmdstr(CMD_GAME)="GAME" cmdstr(CMD_BIOS)="BIOS" cmdstr(CMD_HELP)="HELP" cmdstr(CMD_NOTEPAD)="NOTEPAD" cmdstr(CMD_PICLOAD)="PICLOAD" sdim helpstr,64,CMD_MAX helpstr(CMD_EXIT)=" ・・・・ 終了" helpstr(CMD_PICLOAD)=" ・・・・ 画像表示" helpstr(CMD_HELP)=" ・・・・ コマンド表示" cmd = "GAME" input cmd,100,20 button "実行",*cmd_run stop *cmd_run switch cmd case cmdstr(CMD_NULL) //無し swbreak case cmdstr(CMD_EXIT) end swbreak case cmdstr(CMD_GAME) mes "GAME" swbreak case cmdstr(CMD_HELP) repeat CMD_MAX mes cmdstr(cnt)+helpstr(cnt) loop swbreak case cmdstr(CMD_PICLOAD) picload dir_exe+"\\sample\\hgimg3\\sb_bg1.bmp",1 swbreak //・ //・ //・ default mes "このコマンドは存在いたしません。" swend stop



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