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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0119
(´・ω・`)deffunc内でのinstrが・・・3解決


(´・ω・`)

リンク

2008/1/19(Sat) 15:47:38|NO.13149

テキストをシャドウ付き文字として表示する、
簡単なモジュールを作っていたのですが・・・


#module #deffunc print_ex str txt, int posx, int posy, int indent, local ptr // print_ex "文字列", [Xpos], [Ypos], [行間] if indent = 0 : goto *@forward if instr(txt, 0, "\n") = -1 : goto *@forward flg = 0 : ptr = 0 while flg = 0 npos = instr(txt, ptr, "\n") if npos = -1 : _break ptxt = strmid(txt, ptr, npos) color 170, 170, 170 : pos posx-1, posy-1 : print ptxt color 40, 40, 40 : pos posx, posy : print ptxt posy += indent : ptr += npos + 1 wend ptxt = strmid(txt, ptr, strlen(txt)) color 170, 170, 170 : pos posx-1, posy-1 : print ptxt color 40, 40, 40 : pos posx, posy : print ptxt return *@ color 170, 170, 170 : pos posx-1, posy-1 : print txt color 40, 40, 40 : pos posx, posy : print txt return #global screen 0, 640, 480 gsel 0, 1 print_ex "テスト\nテスト", 10, 10, 20 stop

ファンクション内の3行目&6行目のinstr命令の部分で
「変数が指定されていない」というエラーが出てしまいます。
local定義が必要なのかと思い、モジュール中の変数を全部localで
定義してみましたがエラー。

それではと、#deffunc等のモジュール定義をコメントアウトして
ためしに走らせてみると全くエラーが出ませんでした。

モジュール内でのinstr命令は、なにか別の書式ルールとかがあるんでしょうか。
さっぱりわかりません・・・(´・ω・`)



この記事に返信する


LonelyWolf

リンク

2008/1/19(Sat) 16:10:59|NO.13150

#deffuncのパラメータにstrを指定すると、
変数ではなく文字列として取り扱わるようです。

p = instr("abc", 0, "a")としたときのエラーと同じです。

適当な変数にtxtのデータを移してからinstrの第一引数に
その変数を指定してあげれば動くと思います。



(´・ω・`)

リンク

2008/1/19(Sat) 16:23:20|NO.13152

素早いご回答、感謝いたします!(*゚Д゚)

strが文字列扱いなら、数値変数ももしや・・・と思ったら、
やはりただの数値扱いになってました。ギャフン。

deffuncの仕組みそのものを勘違いしてただけでした。
あまりにバカすぎて申し訳なかったです・・・(´・ω・`)



DoubleQuote

リンク

2008/1/23(Wed) 02:07:05|NO.13224

かなり、遅くなりましたが、こんな感じも出来ますよって事で
一回廃棄して、新たな関数として作り上げてしまう方法です。
結構有名なやり方なので、既知の方は多いと思いますが失礼します
確か、ここの掲示板でおそわったような・・・

#undef instr // instr 命令 廃棄 #module #defcfunc instr str p1 , int p2 , str p3 _p1 = p1 // 変数へ代入 return instr@hsp(_p1,p2,p3) #global dialog instr("abc", 0, "a") // エラー回避[0] dialog instr("abc", 0, "b") // エラー回避[1] dialog instr("abc", 0, "c") // エラー回避[2] end



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