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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1118
もっちりさんcsvstrの使い方5解決


もっちりさん

リンク

2006/11/18(Sat) 09:34:36|NO.3564

下記を実行させようとすると、
hsptmp(8) : error 2 : 文法が間違っています (8行目)
--> csvstr@m0 a@m0,getbuff@m0
となってしまいます。
csvstrの使い方が間違っているのでしょうか?

;----------------------------------------
#include "hspda.as"

#module
#defcfunc cutstr str getbuff,int cutnum

sdim a,100,100

csvstr a,getbuff

return a.cutnum

#global

sdim ss,100

ss="12,34,56,78,90"

mes cutstr(ss,2)

stop



この記事に返信する


Irisawa

リンク

2006/11/18(Sat) 11:57:25|NO.3568

csvstrの定義でglobalがついていないんでしょう。

HSP2.xx時代のモジュールやプラグイン拡張命令はそういう定義をしているものが多くあり
ます。

モジュール内で使用するには命令にグローバル空間を指定するか定義の方にglobal指定して
ください。
前者はモジュール内のすべての命令につける必要があるので面倒ですがスクリプトの
再配布時などにそのまま利用できます。
後者だとアップデート時などに上書きされるとか戻ってしまう可能性があるのでまた注意が
必要になってしまいます。



もっちりさん

リンク

2006/11/18(Sat) 12:28:38|NO.3569

Irisawaさま
>モジュール内で使用するには命令にグローバル空間を指定・・・

これをもう少し詳しく教えて頂けないでしょうか?
宜しくお願い致します。



.

リンク

2006/11/18(Sat) 12:53:07|NO.3571

.



Irisawa

リンク

2006/11/18(Sat) 19:28:35|NO.3576

> これをもう少し詳しく教えて頂けないでしょうか?

global指定をしていないと定義されたモジュール空間内でしか使用できません。
hspda.asでcsvstrの定義を見ると


#func csvstr csvstr $202

とグローバル空間内でのみしか呼び出せないようになっています。これを


#func global csvstr csvstr $202

とするかモジュール空間内の呼び出しを全て


csvstr@ buf, var

のように明示的にグローバル領域を指定しなければモジュール空間内では呼び出せません。

モジュール空間内で


#uselib "hspda.dll" #func csvstr csvstr $202

とやってもいいですが、二度手間で無駄なので上記のどちらかでやった方がいいです。

あと、よく見てみるとモジュール命令の引数の型定義も間違えています。
strは定数なので変数領域には使用できません。
変数の場合は引数の型をvarかarrayにしてください。



もっちりさん

リンク

2006/11/18(Sat) 23:53:08|NO.3580

Irisawaさま
VB感覚でモジュールを組んでしまいました。
ありがとうございました。



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