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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0731
takumiinstrとgoto7解決


takumi

リンク

2011/7/31(Sun) 20:49:52|NO.40333

F1でヘルプを見ても、instrの使い方がよく分かりません


*kensaku sdim a//代入される変数 mesbox a,260,260,1//メッセージボックス pos 220,325:button goto "検索",*kensakuhantei stop *kensakuhantei //instrをつかって例えば ABC という文字があれば goto *a //instrをつかって例えば OPQ という文字があれば goto *b //両方あったりなかったら goto *kensaku で戻る *a *b

このようにする方法がヘルプを見ても分かりません
本当に初歩的な質問で申し訳ありません
HSP始めたばかりの中学1年生です



この記事に返信する


KA

リンク

2011/7/31(Sun) 21:04:17|NO.40336

まず分らない命令を、いきなり組み合わせて使うのはやめましょう。
一つ一つ理解しながら、組み合わせます。

ヘルプのどの部分が分らないのでしょうか、使い慣れた人から見れば
明快な説明ですが、初心者には分りづらいかと思いますので。



backdrop

リンク

2011/7/31(Sun) 21:08:07|NO.40337

instrは対象となる文字列が入った変数を指定し
その文字列の中に探したい文字があったらその位置を返します。
分かりやすく言うと、この中にあの文字がどこにあるか?を教えてくれる関数です。
戻り値が-1なら存在しないことになります。
したがって↑のスクリプト中*kensakuhanteiはこのようになります

*kensakuhantei if ( instr( a, 0, "ABC" ) != -1 ) and ( instr( a, 0, "OPQ" ) != -1 ) : goto *kensaku if ( instr( a, 0, "ABC" ) != -1 ) and ( instr( a, 0, "OPQ" ) == -1 ) : goto *a if ( instr( a, 0, "ABC" ) == -1 ) and ( instr( a, 0, "OPQ" ) != -1 ) : goto *kensaku goto *kensaku
この場合両方の条件(ABCが存在,OPQが存在)が成り立つ場合と、片方だけが成り立つ場合、両方成り立たない場合をそれぞれ考えなければなりません。



backdrop

リンク

2011/7/31(Sun) 21:11:17|NO.40338

No.40337訂正


誤: if ( instr( a, 0, "ABC" ) != -1 ) and ( instr( a, 0, "OPQ" ) == -1 ) : goto *a if ( instr( a, 0, "ABC" ) == -1 ) and ( instr( a, 0, "OPQ" ) != -1 ) : goto *kensaku 正: if ( instr( a, 0, "ABC" ) == -1 ) and ( instr( a, 0, "OPQ" ) != -1 ) : goto *a if ( instr( a, 0, "ABC" ) != -1 ) and ( instr( a, 0, "OPQ" ) == -1 ) : goto *b
思いっきり違うの載せてしまった



a-okada

リンク

2011/7/31(Sun) 21:14:07|NO.40339


*kensaku cls sdim a//代入される変数 mesbox a,260,260,1//メッセージボックス pos 220,325:button goto "検索",*kensakuhantei stop *kensakuhantei if instr(a,0,"ABC")!-1 :goto *b //ABC という文字があれば goto *a if instr(a,0,"OPQ")!-1 :goto *c //OPQ という文字があれば goto *b goto *kensaku //両方あったりなかったら goto *kensaku で戻る *b mes "ABC という文字があります" stop *c mes "OPQ という文字があります" stop
参考
http://lhsp.s206.xrea.com/command/instr.html

検索した文字がなかったら-1が返ります。
つまり、-1が返ったら検索した文字がないので、gotoで*kensakuに戻します。

あと、変数の名前とラベルの名前は同じに出来ないので、*aを*bに、*bを*cにしています。
また、gotoでもどした先にmesboxがあるので、メッセージボックスが2つ出来てしまいます。
これを防ぐため、*kensakuの下にcls命令を入れています。
といっても、このスクリプトの場合、gotoで戻さずにstopで止めてもいいと思いますが…

同じ中一同士、頑張りましょう。



たんす

リンク

2011/7/31(Sun) 21:14:47|NO.40340

goto *kensaku

で戻ると毎回mesboxとボタンを作成してしまうので、 stopさせるだけでいいと思います。



a-okada

リンク

2011/7/31(Sun) 21:15:25|NO.40341

書くのに時間がかかりすぎたか…



takumi

リンク

2011/7/31(Sun) 21:18:32|NO.40342

解決です
ありがとうございました



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