[6082] スクリーンセーバーその他 投稿者:snowboya 投稿日:06/08/26(土) 18:19
こんにちは。
HSP3でスクリーンセーバーを作ったのですが、
インストールしてみると、何度も起動するような状態になり、うまくいきません。
あるサイトで、やはりHSP3で作成したスクリーンセーバーが同じような状態になっていたというのを見て、
その方は「重複起動を避ける」ことで応急処置をしたそうなのですが、僕にはやり方がわかりません。
どなたか、うまい対処法をご存知の方がいらしたら教えてください。
ちなみに、その方も僕も、OSは98です。
それからもう一点なのですが、
スクリーンセーバー起動時に一度小さいウインドウが表示されるのですが、
それを表示しないですむ方法はないでしょうか。
こちらは、特に大きな悩みというわけではありませんが…。
[6087] Re: スクリーンセーバーその他 投稿者:矢野 投稿日:06/08/27(日) 10:36
> それからもう一点なのですが、
> スクリーンセーバー起動時に一度小さいウインドウが表示されるのですが、
> それを表示しないですむ方法はないでしょうか。
> こちらは、特に大きな悩みというわけではありませんが…。
後半の悩みについてですが、
exeファイルを作成するとき、
「起動時にメインウィンドゥを非表示にする」にチェックを入れて
ください。これで、小さなウィンドゥは表示されなくなります。
[6090] Re^2: スクリーンセーバーその他 投稿者:snowboya 投稿日:06/08/27(日) 16:23
やってみます。ありがとうございます。
[6078] 入力ボックスの文字の大きさ 投稿者:hitochan 投稿日:06/08/23(水) 19:17
mesboxやinput命令で作成した入力ボックスの中の
文字の大きさってどのようにすれば、
かえられるんでしょうか。
教えてください。
[6079] Re: 入力ボックスの文字の大きさ 投稿者:Kpan 投稿日:06/08/23(水) 20:49 <URL>
mes命令などと同じです。
[6080] Re^2: 入力ボックスの文字の大きさ 投稿者:hitochan 投稿日:06/08/24(木) 17:11
> mes命令などと同じです。
お返事
ありがとうございました。
[6075] HSPでコネクションモニターを作りたいのですが・・・ 投稿者:tuna 投稿日:06/08/22(火) 17:46
こんにちは。
長い間悩んでいるのでこの掲示板で質問することにしました。
HSPでnetstatのような、TCPやUDPの接続を表示させるプログラムを作りたいのですが、調べてみても、netstat.exeを使う以外に方法は見つかりませんでした。
HSPでこのようなプログラムを作成するにはどうすれば良いのでしょうか?
[6076] Re: HSPでコネクションモニターを作りたいのですが・・・ 投稿者:GENKI 投稿日:06/08/23(水) 00:00
> HSPでnetstatのような、TCPやUDPの接続を表示させるプログラムを作りたいのですが、
> 調べてみても、netstat.exeを使う以外に方法は見つかりませんでした。
> HSPでこのようなプログラムを作成するにはどうすれば良いのでしょうか?
通信関係の知識がないのでよく分かりませんが、とりあえず「TCP UDP HSP」で
ググってみたらプラグインがいくつか出て来ました。
これらだけではダメなんでしょうか?
[6077] Re^2: HSPでコネクションモニターを作りたいのですが・・・ 投稿者:tuna 投稿日:06/08/23(水) 09:34
それらのプラグインでは接続状況を表示させることができませんでした。し
かし、探している最中に、IP Helper APIというWin32API関数を呼び出すこ
とによって実現することが分かりました。
Win32APIは初めてなのでよく分かりませんが、とりあえずこの方法でやっ
てみます。
返信ありがとうございました。
[6073] システムエラー 投稿者:カズキング 投稿日:06/08/21(月) 20:48
なぜか突然動作しなくなりました。
症状:
・notemaxが参照できない
・strlen()が実行できない
(これについてはエラーNo.6が表示される。
宣言総変数数を見る限り、strlen()が変数として数えられてるとしか思えず・・・。
つまり、「パラメータの文字列」=「配列No.」でエラー。)
HSPを再インストールしたり、
めもりーくりーなー(クロノス・クラウンさん)でメモリ掃除をしても直らず・・・。
もうOSの再インストールしか手がないと思うけど、
バックアップの量が多いのでその手はとりあえず保留してます。
今回の場合noteinfo()、peek()で代用できるんですが、やっぱりOSを再インストールしたほうがいいですよね?
症状がかなり深刻そうなので。
[6074] Re: システムエラー 投稿者:Kpan 投稿日:06/08/21(月) 23:08
HSPの一部命令の挙動だけで、パソコン自体の不具合というのは
少々突拍子な考えかと。。。(^^;
エディタの[HSP]→[HSP拡張マクロを使用する]を有効にしてくだ
さい。notemaxはマクロ定義なので、コンパイル時にnoteinfo関数
に置き換えられます。
//
notesel a
noteload "readme.txt"
mes "全体の行数: "+noteinfo (0)
mes "文字列の長さ: "+strlen (a)+" バイト
//
[6051] no textureって・・・ 投稿者:kk 投稿日:06/08/17(木) 20:13
はじめまして。
市販のHSP入門書で勉強している者です。
メタセコイアで自作した3Dモデル(X形式)をHSPで表示させたいのですが、ダイアログに「no texture」という表示が出てしまい、そのまま「OK」をクリックすると「1システムエラー」という
表示が出てしまいます。付属CDーROMの3Dモデルはちゃんと読み込むんですけど。
ちなみにプラグインはHGIMG3で試しています。それと表示させたいモデルにはテクスチャは使用していません。
どうしたらうまくいくのか、どなたかご教授していただけないでしょうか?
[6058] Re: no textureって・・・ 投稿者:naznyark 投稿日:06/08/19(土) 01:03
> ちなみにプラグインはHGIMG3で試しています。それと表示させたいモデルにはテクスチャは使用していません。
・正しく対象のファイルを読み込んでいるかを確認する。
・本当にテクスチャを使っていないモデルなのかを確認する。
・ x ファイルをテキストエディタで開いて中を調べてみる。
(x ファイルの中身はテキスト形式のデータです)
[6065] Re^2: no textureって・・・ 投稿者:kk 投稿日:06/08/20(日) 09:25
返答していただいて有難うございます。とりあえず、テキストエディタで中を調べてみます。それから・・・
誠にもうしわけありませんが、自分のこの行為はマルチポストというものにあたってしまうため、この掲示板への書き込みは今後ひかえさせていただきます。質問に応じてくださった方、管理者の方、本当に申し訳ありません。
[6067] Re^3: no textureって・・・ 投稿者:GENKI 投稿日:06/08/20(日) 19:07
> 誠にもうしわけありませんが、自分のこの行為はマルチポストというものに
> あたってしまうため、この掲示板への書き込みは今後ひかえさせていただきます。
なにもそこまでしなくても…。
知らなかったんなら次から気をつけてもらえればいいだけの話ですし。
今後も普通に使ってください。(^ ^;
[6071] Re^4: no textureって・・・ 投稿者:kk 投稿日:06/08/20(日) 23:14
解決しました。
皆さん有難うございました。
[6061] ウィンドウのハンドル 投稿者:ド素人 投稿日:06/08/20(日) 01:55
初歩的な質問ですみません
APIのGetPixel関数を使って指定したウィンドウの座標の色を取得したいのですが
指定したいウィンドウのハンドルを調べるにはどうしたら良いのでしょうか?
#uselib "user32.dll"
#cfunc GetDC "GetDC" int
#uselib "gdi32.dll"
#cfunc GetPixel "GetPixel" int, int, int
rgb = GetPixel(GetDC(『ココ』), x, y)
mes strf("Hex RGB: %x", rgb)
[6070] Re: ウィンドウのハンドル 投稿者:774 投稿日:06/08/20(日) 22:25
hspで作ったウィンドウなら
つ hwnd
[6064] getstrにおける区切り文字 投稿者:暇な航海者 投稿日:06/08/20(日) 07:06
getstrに挙動について疑問があるので投稿させていただきました。
この命令は区切り文字を指定できて便利なのですが2文字以上続く
区切り文字、具体的に言いますとスペース使ってデータの隙間を
埋めている場合などではうまく文字列を切り出してくれません。
今のところ以下のように読み飛ばしているのですが、見た目にも
麗しくなくプログラム的にも無駄なことをしているような気がします。
ただ切り出す部分をgetstrを使わず全てpeek文で書くと遅くなるかなと
不安を抱いております。
これ以外でうまい解決方法ございましたらお知恵を拝借できるでしょうか。
col="SUZUKA 2006 08 20"
kpos=0
getstr ps,col,kpos,$20:Ships_ID(TotalNum)=ps:kpos+=strsize
while peek(col,kpos)=$20:kpos++:wend
getstr ps,col,kpos,$20:YYYY(TotalNum)=int(ps):kpos+=strsize
while peek(col,kpos)=$20:kpos++:wend
;以下項目分だけ続きます
;注)colは本来ネット上から取得するデータなので自分で編集しておくことはできません。
[6069] Re: getstrにおける区切り文字 投稿者:LonelyWolf 投稿日:06/08/20(日) 21:15
区切り文字が続いた場合に読み飛ばす仕様ではないので
仕方がありません。簡単にやろうと思えば暇な航海者さんの
なさっているように読み飛ばすしかないのではないでしょうか。
モジュールやマクロで命令のようにしてしまえば、
少しはすっきりするかもしれません。
今回の場合は逆に煩雑になってしまいそうなので紹介だけに
とどめておきますが、複雑な文字列処理の場合、
正規表現を用いるとすっきりすることがあります。
[6049] gmode 7でマスク画像がずれる 投稿者:多聞 投稿日:06/08/17(木) 13:07
はじめまして。
gmode7のアルファブレンドで抜いた画像を動かしたいとおもったのですが、
800*200の元画像を左、マスク用画像を右に並べて000.jpgという画像を作成し
(アドベンチャーゲームのメッセージウィンドウの外枠のような画像です)、
以下のようなスクリプトを組んでみると、こちらではうまくできたのですが、
buffer 1:picload "000.jpg"
screen 0,800,600,0:cls 4
gmode 7:pos 0,0:gcopy 1,0,0,800,600
以下のようにpos 0,0をpos 10,0に変更して動かそうとしたら、
マスク画像の位置がずれてしまってうまくアルファブレンドが
できませんでした。
(マスク画像の表示位置がpos 10,0のときpos 20,0になっているようにみえます)
buffer 1:picload "000.jpg"
screen 0,800,600,0:cls 4
gmode 7:pos 10,0:gcopy 1,0,0,800,600
これはバグなんでしょうか?
[6052] Re: gmode 7でマスク画像がずれる 投稿者:tks 投稿日:06/08/18(金) 01:12
> 以下のようにpos 0,0をpos 10,0に変更して動かそうとしたら、
> マスク画像の位置がずれてしまってうまくアルファブレンドが
> できませんでした。
> (マスク画像の表示位置がpos 10,0のときpos 20,0になっているよ
> うにみえます)
>
> buffer 1:picload "000.jpg"
> screen 0,800,600,0:cls 4
> gmode 7:pos 10,0:gcopy 1,0,0,800,600
ワード検索で過去ログを"gmode 7"で検索してみてください。
恐らく[5438]や[5439]と同じ現象かと。([5438]は私ですが。
Kさんに返信し忘れてるし。すみません。)
http://smile.poosan.net/perl-bin/hsp/ver3/hsp3.cgi?print+200604/06050027.txt
が参考になるかと。
[6053] Re^2: gmode 7でマスク画像がずれる 投稿者:tks 投稿日:06/08/18(金) 01:14
> ワード検索で過去ログを"gmode 7"で検索してみてください。
過去ログ4です。
[6054] Re^3: gmode 7でマスク画像がずれる 投稿者:多聞 投稿日:06/08/18(金) 01:45
>tksさん
ご返答ありがとうございます。
バグなのか私のミスなのかが知りたかったのですが、
やはりバグだったのですね…
(過去ログ検索はしたのですが、該当の書き込みを発見できておりませんでした。お手数をとらせて申し訳ありませんでした)
これはバグトラッキングシステムの方には反映なされないのでしょうか?
アドベンチャーゲームでキャラクターを描画する際等に多用する可能性が
高い処理なので、バグとして報告しておいたほうが良いと思うのですが…
[6062] Re^4: gmode 7でマスク画像がずれる 投稿者:多聞 投稿日:06/08/20(日) 04:20
返答がないようなので、該当の現象を、tksさん、Kさんに無断で
バグトラッキングシステムの方に報告をいたしました。
何か問題がありましたら、お手数ですが削除修正のほどよろしくお願いします。
[6066] Re^5: gmode 7でマスク画像がずれる 投稿者:tks 投稿日:06/08/20(日) 17:08
どうやってバグトラックに書いたらいいかなぁと考えて
いたら返信が遅れました。
> 返答がないようなので、該当の現象を、tksさん、Kさんに無断で
> バグトラッキングシステムの方に報告をいたしました。
ありがとうございました。
[6063] Re^5: gmode 7でマスク画像がずれる 投稿者:KIMU (元K) 投稿日:06/08/20(日) 05:28
どうも KIMU に名前を変えた K です
>何か問題がありましたら、お手数ですが削除修正のほどよろしくお願いします。
特に問題なし
多分単純な計算ミスだろうからすぐに直るだろうと思って
(自分はDX使ってて実際には使用してないからってのもある・・・)
そのままにしてた(^^;
[6068] Re^6: gmode 7でマスク画像がずれる 投稿者:多聞 投稿日:06/08/20(日) 19:33
>KIMUさん
>tksさん
勝手に動いてしまって済みませんでした。
できれば基本機能のみで作りたいという思いがありまして…
どうぞよろしくお願いいたします。
[6055] gzoomについて 投稿者:初心者 投稿日:06/08/18(金) 21:49
gzoomで透明色は使えないのでしょうか?
[6056] Re: gzoomについて 投稿者:GENKI 投稿日:06/08/18(金) 22:15
非常によく見かける質問ですね。
まずは掲示板の過去ログ検索、googleによる検索を週感づけることをオススメします。
> gzoomで透明色は使えないのでしょうか?
gzoomに透明色は適用できません。
gzoomで拡大した画像をgcopyで透明色付きコピーすることで同じような結果が
得られます。
----------
蛇足です。今後の参考にどうぞ。
http://quasiquote.org/hspwiki/%bd%e9%bf%b4%bc%d4%b8%fe%a4%b1%a5%a2%a5%c9%a5%d0%a5%a4%a5%b9
http://quasiquote.org/hspwiki/%bc%c1%cc%e4%a4%ce%bb%c5%ca%fd
[6057] Re^2: gzoomについて 投稿者:naznyark 投稿日:06/08/19(土) 00:55
grotate 命令を使うという手もあります。
[6016] フォルダの容量 投稿者:D-S-K 投稿日:06/08/10(木) 10:48
指定したフォルダの容量を取得することってできますか?
現在バックアップツールを作っていて、バックアップ元フォルダ
とバックアップ先ディスクの容量比較をする必要があるのですが、マ
ニュアルを見てもそれらしい命令が見つからなかったので質問させて
もらいました。
[6018] Re: フォルダの容量 投稿者:Mizki_F 投稿日:06/08/10(木) 15:23
dirlistでファイル一覧を取得してexistでファイルサイズを調べ上げる
のが手っ取り早いです。
ただ、サブフォルダがある場合やファイルの数が多い場合は、かなり
処理時間がかかってしまいますが…
#module
#deffunc DirectryListAll var fileListAll,var parentDir,local subDir,local folderList,local n_max
chdir parentDir
folderList=""
dirlist folderList,"*.*",5
notesel folderList
n_max=notemax
repeat n_max
if n_max<1 : break
noteget _subDir,cnt
_subDir=parentDir+_subDir+"\\"
noteadd _subDir,cnt,1
loop
fileListAll+=folderList
repeat n_max
if n_max<1 : break
notesel folderList
noteget _subDir,cnt
subDir = _subDir
chdir subDir
DirectryListAll fileListAll,subDir
chdir parentDir
loop
;------------------
dirlist fileList,"*.*",1
notesel fileList
n_max=notemax
repeat n_max
if n_max<1 : break
notesel fileList
noteget _subDir,cnt
_subDir=parentDir+_subDir
noteadd _subDir,cnt,1
exist _subDir : if strsize>-1 : fileSizeAll+=strsize
loop
fileListAll+=fileList
return fileSizeAll
#global
#include "hspext.as"
sdim tempDir,260
selfolder tempDir,""
if stat : end
fileListAll="" : tempDir+="\\"
DirectryListAll fileListAll,tempDir : fileSizeAll=stat
notesel fileListAll
a=strlen(tempDir)
repeat notemax
noteget temp,cnt
temp=strmid(temp,a,260)
noteadd temp,cnt,1
loop
mesbox fileListAll,480,400,0
mes ""+fileSizeAll+" byte"
stop
[6023] Re^2: フォルダの容量 投稿者:D-S-K 投稿日:06/08/11(金) 22:00
> dirlistでファイル一覧を取得してexistでファイルサイズを調べ上げ
る
> のが手っ取り早いです。
> ただ、サブフォルダがある場合やファイルの数が多い場合は、かなり
> 処理時間がかかってしまいますが…
やはりその手しかないですか。
それも一応考えたんですが、手間がかかりすぎるなあ、と思ったので。
拡張プラグインで手軽にできそうな物を探してみることにします。
サンプルソースまで書いていただき、ありがとうございました。
[6024] Re^3: フォルダの容量 投稿者:さくら 投稿日:06/08/11(金) 22:33
> > dirlistでファイル一覧を取得してexistでファイルサイズを調べ上げ
> る
> > のが手っ取り早いです。
> > ただ、サブフォルダがある場合やファイルの数が多い場合は、かなり
> > 処理時間がかかってしまいますが…
>
>
> やはりその手しかないですか。
COMを使えば、少し速いです。参考として下さい。3桁毎のカンマ編集を
しなければ、さらに簡単になります。
;▼サイズを取得する対象フォルダを指定する
#include "hspext.as"
sdim sFile,260
selfolder sFile,""
if stat : end
newcom objFS, "Scripting.FileSystemObject"
;▼存在の確認
objexFile=objFS("FolderExists", sFile)
if objexFile==0 {
dialog "フォルダは存在しません。 結果="+objexFile
delcom objFS
stop
}
objFol=objFS("GetFolder", sFile)
newcom regEx,"VBScript.RegExp"
regEx("Pattern") = "^(.*?)(...)(...)$"
regEx("Global") = 1
destSize=objFol("size")
;▼destSizeを3桁毎のカンマ付きに編集
comres stra
regEx->"Replace" destSize,"$1,$2,$3"
fname=objFol("Name")
ShowFolderSize=fname+" "+stra+" byte 使用しています。"
pos 10,10 : mes ""+ShowFolderSize
delcom objFol
delcom regEx
if vartype(objFS)==6 {
if varuse(objFS)==1 : delcom objFS
}
stop
[6042] Re^4: フォルダの容量 投稿者:fk 投稿日:06/08/16(水) 14:50
今更なんですが、フォルダーをC:¥を指定すると必ず
destSize=objFol("size")
のところで、エラー37が出ます。
2台のパソコンで試しました。
[6043] Re^5: フォルダの容量 投稿者:さくら 投稿日:06/08/16(水) 20:56
> 今更なんですが、フォルダーをC:¥を指定すると必ず
>
> destSize=objFol("size")
>
> のところで、エラー37が出ます。
>
> 2台のパソコンで試しました。
何故エラーとなるか判りますか?
c:\\とした場合は、それは、フォルダではなくドライブだからです。
objFol=objFS("GetFolder", sFile)では、フォルダの容量取得をしている
ので、ドライブ(全ディスク容量)取得できないためにエラーとなっています。
ただ、存在の確認の objexFile=objFS("FolderExists", sFile) 部分では、
ドライブもフォルダであると識別しているようです。
結論から言えば、APIのGetDriveType関数で媒体の判定をします。
この関数の戻り値(stat)により、'1'が返された場合は、ドライブなしと判定
でき、この時は、フォルダの容量を取得させます。
また、'3'の場合は、ハードディスクとなるので、この場合は、
APIのGetDiskFreeSpaceEx関数を利用してディスクの容量を取得するルーチン
を作る必要があります。
フォルダだけを対象(限定)として、ドライブの容量取得をさせないとすれば、
単純に、少しインチキくさいですが、
newcom objFS, "Scripting.FileSystemObject"の前で
if strlen(sFile)<=3 {
dialog "ドライブの容量は取得できません。"
end
}
とかすれば回避できそうです。
[6044] Re^6: フォルダの容量 投稿者:fk 投稿日:06/08/17(木) 08:41
早速のお返事ありがとうございました。
フォルダーとドライブの違いはわかりますが、
c:\\ 以外のドライブを指定してやると問題なく
動作するんですが、なぜでしょうか。
[6028] はじめて!二日 投稿者:やきいも 投稿日:06/08/14(月) 09:22
昨日からはじめてる!初心者なんですが!
うまくなるコツなどをおしえてください
[6041] Re: はじめて!二日 投稿者:GENKI 投稿日:06/08/15(火) 21:57
付属マニュアルの「初心者のためのHSP入門」をまずはやってみること。
推奨サイトや講座系サイトを活用するとか。
http://hsp.tv/play/link.html
自分にあった書籍を探すのもいいですね。
http://hsp.tv/make/hspbook.html
> うまくなるコツなどをおしえてください
昨日今日ですごいプログラム組めるようにはなりません。
(例外として過去に別の言語を使っていると覚える期間も短いようです。)
ゆっくりのんびりこつこつ気長にやっていくことですね。
あれもしたいこれもしたいは分かるけど、できるとことから
一つ一つ身に付けていくのが一番早い方法だと思います。
[6037] Re: はじめて!二日 投稿者:りすと 投稿日:06/08/14(月) 22:22
HSP関連のHPには初心者を対象とした講座がいくつかあるので
そのようなサイトに行ってみるのがいいでしょうね
HSPセンター
http://hspcenter.com/
HSP BIGINNER'S CLUB
http://www.rinku.zaq.ne.jp/ultimate/
[6036] Re: はじめて!二日 投稿者:774 投稿日:06/08/14(月) 19:47
「昨日からはじめてる!初心者なんですが!
うまくなるコツなどをおしえてください」
・・・なんて質問をしないこと、かな?w
質問をし、回答を待ってる暇があるんなら
いろんなサイトやヘルプを読んだり、
「初心者」の知ってる範囲でもいろいろ作ったりできるからね
[6038] コンテスト 投稿者:やきいも 投稿日:06/08/15(火) 10:02
コンテストの作品をやってみたいのですが!
どうもできないのですが
なんででしょうか?
[6039] Re: コンテスト 投稿者:Irisawa 投稿日:06/08/15(火) 10:22
> コンテストの作品をやってみたいのですが!
> どうもできないのですが
> なんででしょうか?
「どうもできない」といわれても他人に分かるわけがありません。
そういうのは人に聞くことではなく自分で考えるものでは?
何が原因なのか分かっていないのが原因のような気が。
何がどうできないのかなどそういったことは自分が一番分かっている
ことだと思います。
[6040] Re^2: コンテスト 投稿者:やきいも 投稿日:06/08/15(火) 11:33
わかりました!
解凍しないといけないんですね!
いまからやってみます
[6030] [要望]ラベルからジャンプして来る命令(@hspb3wish) 投稿者:kz3 投稿日:06/08/14(月) 10:30 <URL>
このスレッドはhspb3wishで広く意見を聞かせて頂きたい要望として移動したものです。
digitさん(仮)の引用>
> 指定したラベルからその場所にジャンプするgofrom命令(仮)が欲しいです。
> この命令が加わることによる利点はソースの一部分をデバッグする時に
> デバッグしたいラベルにgotoして帰って来たい場所のラベルからgofromで戻ってきます。
> その結果デバッグしたいソースをいじらずにデバッグできます。
なお、この投稿の削除キーは「cmdwish」です。
[6031] Re: [要望]ラベルからジャンプして来る命令(@hspb3wish) 投稿者:kz3 投稿日:06/08/14(月) 10:31 <URL>
> その結果デバッグしたいソースをいじらずにデバッグできます
デバッグというのはバグを取り除く作業です。
ソースにバグがあればソースを直さずにバグは取れません。
またバグというのはそれまで実行されてきた処理の結果で起こるものなので、
「デバッグしたいラベルにgotoして」という一部の処理を飛ばすようなことをして、
着地したラベル以降を処理しても、正しい結果は得られないと思いますよ。
この削除キーも「cmdwish」です。
[6033] Re^2: [要望]ラベルからジャンプして来る命令(@hspb3wish) 投稿者:kz3 投稿日:06/08/14(月) 10:38 <URL>
digitさん(仮)の引用>
> 僕はこの命令をJavaのJUNITみたいな事がしたいと思って提案しました。
> 本当はJUNITみたいな事がしたいのですがそれだと作者様の負担になるかもしれないと思い代替案としてです。
> デバッグという言い方は適切ではなかったかもしれませんね
> 僕がしたいのは動作確認とも言えます。
> もちろんJUNITでテストしてもバグはとりませんがとても役にたちます。
利用例の引用>
// samp.hsp
*L1
a=3
b=3
*L2
c=a*b
*L3
mes c
stop
// sampb.hsp
repeat 10,1
a=cnt
repeat 10,1
b=cnt
goto *L2
gofrom *L3
logmes "c="+c+" a="+a+" b="+b
loop
loop
stop
#include "smp.hsp"
> これを
> このように動作して欲しいです
// samp.hsp
*L1
a=3
b=3
*L2
c=a*b
*L3
goto *L4
mes c
stop
// sampb.hsp
repeat 3,1
a=cnt
repeat 3,1
b=cnt
goto *L2
*L4
logmes "c="+c+" a="+a+" b="+b
loop
loop
stop
#include "smp.hsp"
> よりスパゲッティプログラムになるだろう とか
> ラベルの所にgoto埋め込めばいいだけじゃない?とか反論もお待ちしています。
この削除キーも「cmdwish」です。(長すぎたな...)
[6034] Re^3: [要望]ラベルからジャンプして来る命令(@hspb3wish) 投稿者:kz3 投稿日:06/08/14(月) 11:05 <URL>
>多分、意見を集めるのは掲示板のほうがいいと思ったので、
>(これから返事を確認せずに)HSP3掲示板の方にスレッドを作っておきます。
>(ここでリプライがたくさんつくようなことがいいのかどうか分からないので)
javaは使ったことないので良く分かりませんが、
gofrom命令で指定したラベル以降は処理をせずに、gofrom命令を書いた次の行に(あたかもラベルから)飛んでくる、ということでしょうか。
もうちょっと利用例と代替例を簡略化するとこういうことですか?
;利用例:
goto *L2
gofrom *L3 ; こう書く
mes "bye"
stop
*L2
mes "*L2"
*L3
mes "*L3" ; 処理されなくていい?
stop
;代替:
goto *L2
*gofrom_end
mes "bye"
stop
*L2
mes "*L2"
*L3
goto *gofrom_end
mes "*L3"
stop
あとはjavaやJUNITが分かる人に任せます...。
この削除キーは「cmdwish」ではありません。
[6035] Re^4: [要望]ラベルからジャンプして来る命令(@hspb3wish) 投稿者:りすと 投稿日:06/08/14(月) 19:14
> あとはjavaやJUNITが分かる人に任せます...。
こんばんわdigit at px-c,net改めりすとです
僕もJUNITは本読みながら使っただけなんで
わからなくても結構ですよ
ラベルから飛んで来るだけで
JUNITを代替できるわけないし・・・
[6015] CGIをつくりたいのですが 投稿者:oniku 投稿日:06/08/10(木) 10:04
HSPではじめるCGIプログラミングという本を開いて数ページの
ところでつまずいてしまったのですが、
#runtime "hsp3cl"
mes "Content-type: text/html\n"
mes "Hello,World!"
stop
と書いた---.asファイルを作成し、オブジェクトの作成をすると
---.ax と---.as.iの2つファイルが生成されまして、
その---.axをAn HTTP Deamonのcgi-binフォルダに入れ
サーバーを起動し、IEでURLにhttp://127.0.0.1/cgi-bin/---.
axと入力してみましたが、「ページが見つかりません」と表示されま
す。
どうかご教授ください。
[6027] Re: CGIをつくりたいのですが 投稿者:シリル 投稿日:06/08/14(月) 01:43 <URL>
おそらく拡張子がaxのファイルではなくexeファイルを使用しないと動かないと思いますよ。
An HTTPDの場合標準で、exeファイルを実行できるような設定になっているので、
***.exeと指定すれば普通に動くと思います。
あと、ソースですがヘッダーの出力は改行が2ついります。
mes "Content-type: text/html\n\n"
としてください。
[6026] 今更のアイコン変更サンプル。 投稿者:秋房 投稿日:06/08/13(日) 21:41
/*PEヘッダーなんか知らない。...[記事修正1]*/
#uselib "msvcrt"
#cfunc memcmp "memcmp" int,int,int
sdim eNam :eNam = "hsptmp.exe"
sdim iNam :iNam = "hsptmp.ico"
sdim eBuf :
sdim nIco :
dim eSiz :
dim iSiz ;Only 0x2fe(766)
dim sKey,3 :sKey(0)=0x00000028,0x00000020,0x00000040
/* ExeFileCheck */
exist eNam :eSiz = strsize :alloc eBuf,eSiz
bload "hsptmp.exe",eBuf
/* IcoFileCheck */
exist iNam :iSiz = strsize-0x16 :alloc nIco,iSiz
/* SearchMemory */
For ii,eSiz,0,- 1
if memcmp(varptr(eBuf)+ii,varptr(sKey),10)=0 {_break}
await
Next
/* LoadIconData */
bload iNam,Nico,Isiz,0x16
/* ChangeIconDa.*/
bsave eNam,Nico,Isiz,ii
/*前回の修正品。...*/
sdim Fnam /* ExeFileName */ :sdim Inam /* IcoFileName */
sdim ss /* */
dim pp /* FilePointer */ : dim Stab,10 /* .rsrc */
dim Sdir, 4 /* Resource */ : dim Sdat, 2 /* Address */
dim Nico /* NewIconData */ : dim Isiz /* IconSize */
dim Oico /* */ : dim Ihed, 6 /* IconHeader */
/**/
Screen 0,152,120,,0,0 :Cls 1
Objsize 152,20 :Button Gosub ".EXE(HSP)-ICON-CHANG",*CHANGE
Stop
*CHANGE
Color 0xc3,0xc3,0xc6 :Boxf :Color 255
/* GetFileName */
Dialog "exe",16 :If (stat) {Enam = refstr}
Else {en = 1 :Gosub *ERROR :Return}
Dialog "ico",16 :If (stat) {Inam = refstr}
Else {en = 2 :Gosub *ERROR :Return}
Exist(Inam)
Isiz = strsize
If (Isiz > 0x2fe) {en = 3 :Gosub *ERROR :Return}
If (Isiz > 0x016) {Isiz -= 0x16}
Alloc Nico,Isiz :Alloc Oico,Isiz
/* Search.rsrc */
Bload Enam,ii,4,0x3c :pp = ii+0xf8
Repeat -1 :Bload Enam,ss,8,pp
If ss = "" {en = 4 :Gosub *ERROR :REturn}
If ss = ".rsrc" {Bload Enam,Stab,40,pp :Break}
pp += 40
Await
Loop
pp = Stab(5)
/* Search.rsrc Type */
Repeat -1 :Bload Enam,Sdir,16,pp
ii = wpeek(Sdir,12)+wpeek(Sdir,14)
pp += 16
/* SearchType Data */
Repeat ii :Bload Enam,Sdat,8,pp :pp += 8 :Await :Loop
If Sdat(1)&0x80000000 {}
Else {pp = (Sdat(1)&0x7fffffff)+Stab(5) :Break}
Await
loop
/* Address Offset */
Bload Enam,Sdat,16,pp
/* LoadNewIcon Data */
Bload Inam,Nico,Isiz,0x16
/* LoadOldIcon Data */
Bload Enam,Oico,Isiz,(Sdat(0)-Stab(3)+Stab(5))
/* ChangeIcon Data */
Bsave Enam,Nico,Isiz,(Sdat(0)-Stab(3)+Stab(5))
/* SaveOldIcon Data */
Ihed(0) = 0x00010000,0x20200001,0x00000004
Ihed(3) = 0x02e80000,0x00160000,0x00000000
Bsave "original.ico",Ihed,0x16
Bsave "original.ico",Oico,Isiz,0x16
Return
*ERROR
Switch en
Case 1 :ss = "[EXE FileName is ?]" :Swbreak
Case 2 :ss = "[ICO FileName is ?]" :Swbreak
Case 3 :ss = "[ICO 32 x 32 c16 ?]" :Swbreak
Case 4 :ss = "[Not Exist .rsrc ?]" :Swbreak
Swend
Pos ,22 :Mes ss
Return
[6006] wmaファイル 投稿者:hitochan 投稿日:06/08/08(火) 22:29
wmaファイルを演奏するプログラムで、
mmload "ongaku.wma",0,0
mmplay 0
としても何も起きません。
何が原因と考えられますか?
教えてください。
[6007] Re: wmaファイル 投稿者:かきしす 投稿日:06/08/09(水) 13:18
> wmaファイルを演奏するプログラムで、
> mmload "ongaku.wma",0,0
> mmplay 0
> としても何も起きません。
> 何が原因と考えられますか?
> 教えてください。
ファイル名が間違っているとか、
パスを指定してない(あるいは間違っている)とか、
PCのボリュームが最低(あるいはミュート)になっているとか・・・
ありがちなのはパスですか。
[6010] Re^2: wmaファイル 投稿者:hitochan 投稿日:06/08/09(水) 19:02
すいません。
midファイルやwavファイルなら、
演奏できるんですが、
やはりwmaファイルは無理
みたいです。
パスなどは全て確認してみましたが・・・。
[6011] Re^3: wmaファイル 投稿者:かきしす 投稿日:06/08/09(水) 22:39
> すいません。
> midファイルやwavファイルなら、
> 演奏できるんですが、
> やはりwmaファイルは無理
> みたいです。
> パスなどは全て確認してみましたが・・・。
ウチの環境では問題なく再生できますね・・・。
そのwmaファイル自体が壊れている、なんて事は無いですか?
他のプレイヤーで再生できましたか?
[6014] Re^4: wmaファイル 投稿者:hitochan 投稿日:06/08/10(木) 07:20
> 他のプレイヤーで再生できましたか?
Windows Media Player では演奏できましたが、
Connect Player というものではエラーがでました。
もうひとつのiTunes では「保護されたWMAフォーマット
であるため演奏できません。」
とでてきました。
[6017] Re^5: wmaファイル 投稿者:かきしす 投稿日:06/08/10(木) 14:24
あまり詳しくないので断定的なことは言えませんが、
保護のかかったWMAを再生できないプレイヤーは結構あり、
多分HSPも再生できないんじゃないかと思います。
『WMA 保護 解除』をキーワードに検索すると
結構色々ヒットしますので、調べてみてください。
[6025] Re^6: wmaファイル 投稿者:hitochan 投稿日:06/08/13(日) 14:16
分かりました^^
ありがとうございました。
早速調べてみます^^
[6019] HSPについて 投稿者:初心者? 投稿日:06/08/11(金) 13:51
私は現在、HSPというプログラム言語を使おうか迷っています。
というのも、この言語を使ってプログラミングしている友人がいるのですが、「難しいからやめた方が良い」と言われました。
本当にそうなのでしょうか?
ちなみに、友人からの薦めではJavaを使った方が良いと言われました。
[6022] Re: HSPについて 投稿者:Irisawa 投稿日:06/08/11(金) 21:48
> 私は現在、HSPというプログラム言語を使おうか迷っています。
HSPは正確にはプログラミング言語ではありません。
プログラミングツール(セット)というのでしょうか。
(分類上はオーサリングツールなどと同じようなジャンルです)
http://ja.wikipedia.org/wiki/Hot_Soup_Processor
http://d.hatena.ne.jp/keyword/Hot%20Soup%20Processor
> というのも、この言語を使ってプログラミングしている友人がいる
> のですが、「難しいからやめた方が良い」と言われました。
> 本当にそうなのでしょうか?
> ちなみに、友人からの薦めではJavaを使った方が良いと言われました。
恐らくJavaの方が難しいでしょう。
根本としてC/C++言語の基本的知識がないと組むこともできないと
思います。
HSPはBASICをベースとした言語仕様を持っていますが完全BASICでも
ありません。
BASIC並の手軽さは抜群に優れていてよほど無茶なことをしなければ
決してそんなに遅くもなくなんといっても日本発祥のツールですので
日本語の文献などが非常に豊富です。
(Javaは中間言語なのにとにかく遅くて重いためJavaでしかできない
ことをやる場合くらいしか使えないかも)
[6020] Re: HSPについて 投稿者:SHI 投稿日:06/08/11(金) 18:33
> 私は現在、HSPというプログラム言語を使おうか迷っています。
> というのも、この言語を使ってプログラミングしている友人がいるのですが、「難しいからやめた方が良い」と言われました。
> 本当にそうなのでしょうか?
> ちなみに、友人からの薦めではJavaを使った方が良いと言われました。
難しいかどうかは人それぞれです。
とりあえず自分で試してみてはいかがでしょう。
[6021] Re^2: HSPについて 投稿者:mamax 投稿日:06/08/11(金) 18:57
一度使用してみることをお勧めします。
[6013] モジュールを使うとファイルサイズが大きくなる? 投稿者:Mizki_F 投稿日:06/08/10(木) 01:54
(Wiki向けのネタだと思うんですが、Wikiの使い方がさっぱりわか
らないのでこちらに書いておきます。)
以前2.6用に作ったモジュールを3.0に移植した際にファイルサイズ
がいきなり大きくなったので、不審に思いちょっと実験をしてみま
した。
テスト1:gosubを使った場合→start.axのサイズ=334byte
a=10 : b=5 : gosub *func1 : mes result
a=10 : b=5 : gosub *func2 : mes result
a=10 : b=5 : gosub *func3 : mes result
stop
*func1
result=a+b
return
*func2
result=a-b
return
*func3
result=a*b
return
テスト2:#moduleを1つ使った場合→start.axのサイズ=472byte
#module
#deffunc func1 var a,var b
result=a+b
return result
#deffunc func2 var a,var b
result=a-b
return result
#deffunc func3 var a,var b
result=a*b
return result
#global
a=10 : b=5
func1 a,b : mes stat
func2 a,b : mes stat
func3 a,b : mes stat
stop
テスト3:#moduleを複数使った場合→start.axのサイズ=496byte
#module
#deffunc func1 var a,var b
result=a+b
return result
#global
#module
#deffunc func2 var a,var b
result=a-b
return result
#global
#module
#deffunc func3 var a,var b
result=a*b
return result
#global
a=10 : b=5
func1 a,b : mes stat
func2 a,b : mes stat
func3 a,b : mes stat
stop
HSPコンテストのショート部門向けに作る場合などはgosubを使う方
が容量を抑えられそうです。
使い勝手はモジュールの方が断然良いですが。
[6008] ver3.0ではERROR 投稿者:sun big to 投稿日:06/08/09(水) 14:48
*j
rnd a,10
mes a
wait 5
goto*j
ver2.6では出来るのですが
ver3.0ではERRORになります
どこが違うのですか
御教授宜しくお願いします
[6009] Re: ver3.0ではERROR 投稿者:かつ 投稿日:06/08/09(水) 15:23
> *j
> rnd a,10
> mes a
> wait 5
> goto*j
>
> ver2.6では出来るのですが
> ver3.0ではERRORになります
> どこが違うのですか
> 御教授宜しくお願いします
ver3.0では、2行目を a=rnd(10) とすると動きますよ。
[6012] Re^2: ver3.0ではERROR 投稿者:sun big to 投稿日:06/08/10(木) 01:07
> ver3.0では、2行目を a=rnd(10) とすると動きますよ。
ありがとうございました
[6003] ある期間の時間の取得 投稿者:Sany 投稿日:06/08/07(月) 22:03
はじめまして、Sanyと申します。
早速ですが質問です。
計算ゲームを作成しているのですが
計算にかかった全体の時間を求めるには
どのようにスクリプトをくめば良いのでしょうか。
計算問題はrandomizeでパターンを初期化しrnd命令で
作成しています。
基礎的な質問ですが、よろしくお願いします。
[6004] Re: ある期間の時間の取得 投稿者:naznyark 投稿日:06/08/08(火) 02:14
> 計算にかかった全体の時間を求めるには
> どのようにスクリプトをくめば良いのでしょうか。
処理開始前の時間を取得
↓
処理
↓
処理終了後の時間を取得
↓
処理前後の時間の差を計算
[6005] Re^2: ある期間の時間の取得 投稿者:Sany 投稿日:06/08/08(火) 07:07
> > 計算にかかった全体の時間を求めるには
> > どのようにスクリプトをくめば良いのでしょうか。
>
> 処理開始前の時間を取得
> ↓
> 処理
> ↓
> 処理終了後の時間を取得
> ↓
> 処理前後の時間の差を計算
御返信ありがとうございます。
時間差取得スクリプトとして作ってみました。
*main
screen 0,200,100
a=gettime(6)
randomize
time=rnd(500)
wait time
b=gettime(6)
c=b-a
mes ""+c+"秒"
stop
これですと、秒しか取得できないので
もっと手を加えていきます。
これで解決しました。
わかりやすい御回答をありがとうございました。
[5951] OS名とバージョン番号 投稿者:ちたん 投稿日:06/07/23(日) 18:22
sysinfo(0) の OS 名とバージョン番号って
OS によってどんな文字列が返ってくるのですか?
"WindowsNT ver5.0"
OS が Win2K しかなくて判断できないです(TT)。
16ビット系だと、
"Windows ver4.x"
みたいに返ってくるのですかね。
自分の中で「おそらく」なので確信が欲しいです。
お願いします。
[5956] Re: OS名とバージョン番号 投稿者:Irisawa 投稿日:06/07/24(月) 10:43
> sysinfo(0) の OS 名とバージョン番号って
> OS によってどんな文字列が返ってくるのですか?
> "WindowsNT ver5.0"
> OS が Win2K しかなくて判断できないです(TT)。
OSの正式なバージョン番号を返しますので
Win95=Windows ver4.00
Win98/SE=Windows ver4.10
WinME=Windows ver4.90
WinNT4.0=WindowsNT ver4.0
Win2K=WindowsNT ver5.0
WinXP=WindowsNT ver5.1
Win2K3=WindowsNT ver5.2
WinVista=WindowsNT ver6.0
のような感じです。
(表記は微妙に異なるかも)
> 16ビット系だと、
そもそも、HSP2.x/3.xは32bitアプリなのでWin95/WinNT4.0以降でしか
動作しませんよ。
(なお、HSP3.xはWin98/Win2K以降を対象にしており、Win95/WinNT4.0
ではOSの仕様上、実行そのものや動作に制限があったりします)
> "Windows ver4.x"
> みたいに返ってくるのですかね。
> 自分の中で「おそらく」なので確信が欲しいです。
> お願いします。
Win3.1/WinNT4.0以前はバージョン番号をそのまま表記していたので
16bit実行ファイルを作成できるCコンパイラなどでこのGetVersion()
などを使用した場合に返ってくる値でOKだと思います。
Win95/Win2Kを製品名で変更したのはマーケティング上の事情です。
# PC業界においてはver4.0は非常に不吉な数字のようで売れない、
# 評判が悪いなどの習慣があり、隠したかったようです。
# (実際に結局はWin95は知名度はあるけれど評判は悪い)
# また、発売年度を強調することで知名度を上げようとするねらいも?
# (少なくても日本では成功した?)
# Win2Kはそもそも、Win9xとWinNTを統合する目的で開発しており、
# 別にWinNT5.0が開発されていました。
# でも、統合バージョンの開発の遅れからWinNT5.0をWin2Kに名称変更
# して販売し、統合バージョンはその後に別販売することにしてそれ
# までの間のつなぎとして急遽WinMEを最後のWin9xとして開発・投入し
# 統合バージョンはWinXPとして販売されました。
# WinMEは非常にやっつけ仕事でいい加減に開発したようでそのせいで
# 不具合が多く、不安定になっています。
これ以降、製品名に発売年度(または次年度)を付けるようになるのが
習慣化しましたが。
[6002] Re^2: OS名とバージョン番号 投稿者:ちたん 投稿日:06/08/07(月) 19:14
レスおくれてすみません。
これでノドにつかえていたものが解けました(^ヮ^)。
ありがとうございました。
[5955] Re: OS名とバージョン番号 投稿者:LonelyWolf 投稿日:06/07/23(日) 20:36
> sysinfo(0) の OS 名とバージョン番号って
> OS によってどんな文字列が返ってくるのですか?
> "WindowsNT ver5.0"
> OS が Win2K しかなくて判断できないです(TT)。
> 16ビット系だと、
> "Windows ver4.x"
> みたいに返ってくるのですかね。
> 自分の中で「おそらく」なので確信が欲しいです。
> お願いします。
Kpanさんの紹介されたサイトも参考の上、
この掲示板のワード検索から、過去ログ3で
sysinfoで検索して下さい。
[5954] Re^2: OS名とバージョン番号 投稿者:Kpan 投稿日:06/07/23(日) 20:20
参考になるか分かりませんが、ちょくとさんのページを
チェックしてください。
http://yokohama.cool.ne.jp/chokuto/advanced/version.html
[6001] 文書の印刷について。 投稿者:@神無月 投稿日:06/08/07(月) 19:03
今作っているエディタに印刷機能をつけたいんですが
どう記述すればいいかわかりません。。。
過去ログも見てみたんですが、参考になるものがなくて・・・
どうにかならないでしょうか?
[6000] SCILEXER.DLLで自分好みのエディタを作りませんか。 投稿者:秋房 投稿日:06/08/07(月) 00:58
/*SCILEXER.DLLの簡単な使い方。...難しい事は知らない*/
#include "user32.as"
#include "kernel32.as"
#define SC_CASE_LOWER 2
#define SC_CASE_MIXED 0
#define SC_CASE_UPPER 1
#define SCE_B_ASM 14
#define SCE_B_COMMENT 1
#define SCE_B_CONSTANT 13
#define SCE_B_DATE 8
#define SCE_B_DEFAULT 0
#define SCE_B_IDENTIFIER 7
#define SCE_B_KEYWORD 3
#define SCE_B_KEYWORD2 10
#define SCE_B_KEYWORD3 11
#define SCE_B_KEYWORD4 12
#define SCE_B_NUMBER 2
#define SCE_B_OPERATOR 6
#define SCE_B_PREPROCESSOR 5
#define SCE_B_STRING 4
#define SCE_B_STRINGEOL 9
#define SCI_ADDTEXT 2001
#define SCI_BRACEBADLIGHT 2352
#define SCI_BRACEHIGHLIGHT 2351
#define SCI_BRACEMATCH 2353
#define SCI_CANPASTE 2173
#define SCI_CANREDO 2016
#define SCI_CANUNDO 2174
#define SCI_CLEAR 2180
#define SCI_CLEARALL 2004
#define SCI_COLOURISE 4003
#define SCI_COPY 2178
#define SCI_CUT 2177
#define SCI_EMPTYUNDOBUFFER 2175
#define SCI_FINDTEXT 2150
#define SCI_GETCARETLINEBACK 2097
#define SCI_GETCARETLINEVISIBLE 2095
#define SCI_GETCHARAT 2007
#define SCI_GETCOLUMN 2129
#define SCI_GETCURRENTPOS 2008
#define SCI_GETINDENT 2123
#define SCI_GETINDENTATIONGUIDES 2133
#define SCI_GETLENGTH 2006
#define SCI_GETLEXER 4002
#define SCI_GETLINECOUNT 2154
#define SCI_GETLINEINDENTATION 2127
#define SCI_GETMARGINWIDTHN 2243
#define SCI_GETMODIFY 2159
#define SCI_GETSEARCHFLAGS 2199
#define SCI_GETSELECTIONEND 2145
#define SCI_GETSELECTIONSTART 2143
#define SCI_GETTARGETEND 2193
#define SCI_GETTARGETSTART 2191
#define SCI_GETTEXT 2182
#define SCI_GETTEXTLENGTH 2183
#define SCI_GETUSETABS 2125
#define SCI_GETVIEWEOL 2355
#define SCI_GETVIEWWS 2020
#define SCI_GETWRAPMODE 2269
#define SCI_GETZOOM 2374
#define SCI_GOTOLINE 2024
#define SCI_GOTOPOS 2025
#define SCI_INSERTTEXT 2003
#define SCI_LINEFROMPOSITION 2166
#define SCI_PASTE 2179
#define SCI_POSITIONFROMLINE 2167
#define SCI_REDO 2011
#define SCI_REPLACETARGET 2194
#define SCI_REPLACETARGETRE 2195
#define SCI_SCROLLCARET 2169
#define SCI_SEARCHINTARGET 2197
#define SCI_SELECTALL 2013
#define SCI_SETCARETFORE 2069
#define SCI_SETCARETLINEBACK 2098
#define SCI_SETCARETLINEVISIBLE 2096
#define SCI_SETCURRENTPOS 2141
#define SCI_SETINDENT 2122
#define SCI_SETINDENTATIONGUIDES 2132
#define SCI_SETKEYWORDS 4005
#define SCI_SETLEXER 4001
#define SCI_SETLEXERLANGUAGE 4006
#define SCI_SETLINEINDENTATION 2126
#define SCI_SETMARGINWIDTHN 2242
#define SCI_SETPROPERTY 4004
#define SCI_SETSAVEPOINT 2014
#define SCI_SETSEARCHFLAGS 2198
#define SCI_SETSELBACK 2068
#define SCI_SETSELECTIONEND 2144
#define SCI_SETSELECTIONSTART 2142
#define SCI_SETSELFORE 2067
#define SCI_SETTARGETEND 2192
#define SCI_SETTARGETSTART 2190
#define SCI_SETTEXT 2181
#define SCI_SETUSETABS 2124
#define SCI_SETVIEWEOL 2356
#define SCI_SETVIEWWS 2021
#define SCI_SETWRAPMODE 2268
#define SCI_SETZOOM 2373
#define SCI_STYLESETBACK 2052
#define SCI_STYLESETBOLD 2053
#define SCI_STYLESETCASE 2060
#define SCI_STYLESETFONT 2056
#define SCI_STYLESETFORE 2051
#define SCI_STYLESETITALIC 2054
#define SCI_STYLESETSIZE 2055
#define SCI_TARGETFROMSELECTION 2287
#define SCI_UNDO 2176
#define SCI_USEPOPUP 2371
#define SCI_ZOOMIN 2333
#define SCI_ZOOMOUT 2334
#define SCLEX_CPP 3
#define SCLEX_HTML 4
#define SCLEX_NULL 1
#define SCLEX_PERL 6
#define SCLEX_PYTHON 2
#define SCLEX_SQL 7
#define SCLEX_VB 8
#define SCLEX_XML 5
#define SCN_UPDATEUI 2007
#define ctype RGB(%1=0,%2=0,%3=0) (%1 << 16)+(%2 << 8)+%3
LoadLibrary "SCILEXER.DLL"
CreateWindowEX 0x200,"Scintilla",0,0x50000000,0,0,640,240,hwnd,1000,0,0
hSci = stat
hFnt = msmincho
hKey = "screen buffer mes"
hKey1 = "if else"
; SendMessage hSci,SCI_SETCARETLINEVISIBLE,1,0
SendMessage hSci,SCI_SETCARETLINEBACK,RGB(200,255,200),0
; SendMessage hSci,SCI_SETMARGINWIDTHN,0,36
SendMessage hSci,SCI_STYLESETFONT,32,varptr(hFnt)
SendMessage hSci,SCI_STYLESETSIZE,32,16
SendMessage hSci,SCI_SETLEXER,SCLEX_VB,0
SendMessage hSci,SCI_SETKEYWORDS,0,varptr(hKey)
SendMessage hSci,SCI_STYLESETFONT,SCE_B_KEYWORD,varptr(hFnt)
SendMessage hSci,SCI_STYLESETSIZE,SCE_B_KEYWORD,16
SendMessage hSci,SCI_STYLESETFORE,SCE_B_KEYWORD,RGB(0,0,255)
SendMessage hSci,SCI_SETKEYWORDS,1,varptr(hKey1)
SendMessage hSci,SCI_STYLESETFONT,SCE_B_KEYWORD2,varptr(hFnt)
SendMessage hSci,SCI_STYLESETSIZE,SCE_B_KEYWORD2,16
SendMessage hSci,SCI_STYLESETFORE,SCE_B_KEYWORD2,RGB(150,0,150)
SendMessage hSci,SCI_STYLESETBOLD,SCE_B_KEYWORD2,1
SendMessage hSci,SCI_STYLESETCASE,SCE_B_KEYWORD2,SC_CASE_UPPER
SendMessage hSci,SCI_STYLESETFORE,SCE_B_OPERATOR,RGB(120,0,0)
SendMessage hSci,SCI_STYLESETFORE,SCE_B_PREPROCESSOR,0x90090
SendMessage hSci,SCI_STYLESETFONT,SCE_B_COMMENT,varptr(hFnt)
SendMessage hSci,SCI_STYLESETSIZE,SCE_B_COMMENT,16
SendMessage hSci,SCI_STYLESETITALIC,SCE_B_COMMENT,1
SendMessage hSci,SCI_STYLESETFORE,SCE_B_COMMENT,RGB(255,0,255)
SendMessage hSci,SCI_STYLESETBACK,SCE_B_COMMENT,0x00ff00
SendMessage hSci,SCI_STYLESETFORE,SCE_B_STRING,RGB(130,0,0)
SendMessage hSci,SCI_STYLESETSIZE,SCE_B_STRING,16
SendMessage hSci,SCI_STYLESETFORE,SCE_B_IDENTIFIER,0
SendMessage hSci,SCI_STYLESETFORE,SCE_B_NUMBER,RGB(0,0,0)
SendMessage hSci,SCI_STYLESETFORE,SCE_B_DATE,RGB(128,128,0)
SendMessage hSci,SCI_STYLESETFORE,34,RGB(0,0,255)
SendMessage hSci,SCI_STYLESETBACK,34,RGB(255,255,0)
SendMessage hSci,SCI_STYLESETFORE,35,RGB(255,0,0)
SendMessage hSci,SCI_SETMARGINWIDTHN,0,36
SendMessage hSci,SCI_SETCARETLINEVISIBLE,1,0
SendMessage hSci,SCI_SETINDENTATIONGUIDES,1,0
; SendMessage hSci,SCI_SETVIEWEOL,1,0
ss = "screen\nbuffer\nif\nelse\n'--- ダウンロードは下記です。 ---\n\n"
ss += "http://scintilla.sourceforge.net/SciTE.html\n"
ss += "http://scintilla.sourceforge.net/ScintillaDownload.html\n\n\n\n"
SendMessage hSci,SCI_SETTEXT,0,varptr(ss)
[5972] ドメインからIPアドレスを得るには 投稿者:TASHIRO 投稿日:06/07/28(金) 22:19
コマンドプロンプトでいう"NSLOOKUP"のようなことをしたいのですが
行き詰ってしまいました。
ドメインからIPアドレスを得るにはどうすればいいのでしょうか?
[5973] Re: ドメインからIPアドレスを得るには 投稿者:asuka 投稿日:06/07/29(土) 19:17
> コマンドプロンプトでいう"NSLOOKUP"のようなことをしたいのですが
> 行き詰ってしまいました。
>
> ドメインからIPアドレスを得るにはどうすればいいのでしょうか?
API(winsock)のgethostbynameを使うか、プラグインpcbnetのhostbynameを使えばいいです。
前者はwinsockの知識が必要なので、後者の方がカンタンです。
[5997] Re^2: ドメインからIPアドレスを得るには 投稿者:TASHIRO 投稿日:06/08/03(木) 23:23
ご返答ありがとうございます。
プラグインpcbnetで試してみたいと思います。
このたびはありがとうございました。
> > コマンドプロンプトでいう"NSLOOKUP"のようなことをしたいのですが
> > 行き詰ってしまいました。
> >
> > ドメインからIPアドレスを得るにはどうすればいいのでしょうか?
>
> API(winsock)のgethostbynameを使うか、プラグインpcbnetのhostbynameを使えばいいです。
> 前者はwinsockの知識が必要なので、後者の方がカンタンです。
[5975] ユーザ定義命令の中のgoto 投稿者:bee 投稿日:06/07/29(土) 21:14
こんばんは。質問させていただきます。
ユーザ定義命令内で次のようなボタンの使い方をすると
「サブルーチン外のreturnは無効です」のエラーが出ます。
gotoをreturnしてはいけないのは知っていますが、buttonで
飛ぶとエラーが出て、gotoで飛ぶとエラーは出ないので、
ユーザ定義命令内をボタンジャンプ後に脱出という方法は
HSPの仕組み上使えないのかなと思い質問しました。
もしかしたらgotoのほうも警告が出ないだけで問題はあるのかも
しれませんが、だとするとユーザ定義命令の中でのボタンジャンプ
やgotoはそもそも使うべきではないのでしょうか。
どうかご指導お願いします。よろしくお願いいたします。
#module
#deffunc testfunc
button "GO", *FINISH
stop
*FINISH
mes "finish"
return
#global
testfunc
stop
[5996] Re: ユーザ定義命令の中のgoto 投稿者:bee 投稿日:06/08/03(木) 22:51
ちょっと時間かかりましたが、みなさんの回答をヒントになんとか解決いたしました。
ありがとうございました。
#deffunc内でbutton gotoを使うと、飛んだ先で引数のarray sary(文字列型一次元配列)が破壊される(?)ため、
button gosubで飛ぶ方法に変えました。
フラグを導入し、button gosubは普通のgosubと違い直下に戻ってこないので(ここはまだ理解不能)、
命令の脱出判定をループ内に設けreturnするようにしました。
flag = 0
button gosub "OK", *FINISH
*MAIN_LOOP
await 10 : if (ginfo_act == -1) { goto *MAIN_LOOP }
if flag { return }
*FINISH
flag = 1
return
button goto/gosubについてはまだ理解しきれないところもありますが、とりあえず今回の質問はこれで終わります。
みなさんご協力どうもありがとうございました。
[5981] Re: ユーザ定義命令の中のgoto 投稿者:bee 投稿日:06/07/30(日) 23:00
皆さんごめんなさい。
私の説明不足で誤解を与えてしまったようです。
*FINISH の後ろの return は #deffunc のための return です。
ボタン操作だけでこの命令を脱出しようとしたら、偶然この形になってしまいました。
で、button goto で *FINISH に行くとエラーになり、下のサンプルのように 普通の goto で行くと
エラーがでないのです。この2つの goto は別物なのでしょうか?
#module
#deffunc testfunc
*MAIN_LOOP
await 10 : if (ginfo_act == -1) { goto *MAIN_LOOP }
getkey key, 1
if key { goto *FINISH }
goto *MAIN_LOOP
*FINISH
return
#global
質問を要約しますと、
(1) ボタン操作だけで #deffunc 内の処理を抜けるのは無理か
(2) 普通の goto で出来るのは問題ないのか
です。たびたび申し訳ありませんが、ご教授お願いいたします。
Irisawaさんのお答えが最初の質問に対する答えになっているとしたらごめんなさい。
[5982] Re^2: ユーザ定義命令の中のgoto 投稿者:kz3 投稿日:06/07/30(日) 23:41
>button goto で *FINISH に行くとエラーになり、下のサンプルのように
>普通の goto で行くとエラーがでないのです。この2つの goto は別物なのでしょうか?
別ものです。
[5978] Re: ユーザ定義命令の中のgoto 投稿者:矢野 投稿日:06/07/29(土) 21:58
> こんばんは。質問させていただきます。
>
> ユーザ定義命令内で次のようなボタンの使い方をすると
> 「サブルーチン外のreturnは無効です」のエラーが出ます。
> gotoをreturnしてはいけないのは知っていますが、buttonで
> 飛ぶとエラーが出て、gotoで飛ぶとエラーは出ないので、
> ユーザ定義命令内をボタンジャンプ後に脱出という方法は
> HSPの仕組み上使えないのかなと思い質問しました。
> もしかしたらgotoのほうも警告が出ないだけで問題はあるのかも
> しれませんが、だとするとユーザ定義命令の中でのボタンジャンプ
> やgotoはそもそも使うべきではないのでしょうか。
> どうかご指導お願いします。よろしくお願いいたします。
>
> #module
> #deffunc testfunc
> button "GO", *FINISH
> stop
> *FINISH
> mes "finish"
> return
> #global
>
> testfunc
> stop
return命令は、gosub命令でメインルーチンからサブルーチンに
移動し、サブルーチン終了後メインルーチンに復帰するときに
使用する命令です。
上のスクリプトにおいて、次のように修正すると問題なく処理できます。
help Browser でbutton命令の書き方を確認してください。
button "GO", *FINISH → button gosub "GO", *FINISH
[5979] Re^2: ユーザ定義命令の中のgoto 投稿者:矢野 投稿日:06/07/29(土) 22:26
> > ユーザ定義命令内で次のようなボタンの使い方をすると
> > 「サブルーチン外のreturnは無効です」のエラーが出ます。
ユーザ定義命令だったのですね。
それを見落として、的はずれの回答をしてしまいました。
irisawaさんの回答が正解のようです。
[5977] Re: ユーザ定義命令の中のgoto 投稿者:Irisawa 投稿日:06/07/29(土) 21:56
> ユーザ定義命令内で次のようなボタンの使い方をすると
> 「サブルーチン外のreturnは無効です」のエラーが出ます。
> gotoをreturnしてはいけないのは知っていますが、buttonで
> 飛ぶとエラーが出て、gotoで飛ぶとエラーは出ないので、
> ユーザ定義命令内をボタンジャンプ後に脱出という方法は
> HSPの仕組み上使えないのかなと思い質問しました。
> もしかしたらgotoのほうも警告が出ないだけで問題はあるのかも
> しれませんが、だとするとユーザ定義命令の中でのボタンジャンプ
> やgotoはそもそも使うべきではないのでしょうか。
> どうかご指導お願いします。よろしくお願いいたします。
HSP3ではgotoするとsublevを初期化してしまうようなのでreturn
できなくなります。
いろいろ、これは問題がありますが現状仕様のようです。
あと、ユーザー定義命令/関数内部でstopは使用しないようにしてくだ
さい。
[5976] Re: ユーザ定義命令の中のgoto 投稿者:カズキング 投稿日:06/07/29(土) 21:44
そもそも「goto」の意味を間違えています。
「goto」は一方通行の命令です。
これはbasic時代から変わっていません。
そして、「button」はボタンを押すとgotoで指定ラベルへ飛べる命令です。
つまり、「gotoを使うとreturnする場所がない」ということです。
「return」したいのであれば「gosub」を使いましょう。
[5967] Startup failed. とは 投稿者:白岩 康平 投稿日:06/07/28(金) 13:18
表記のエラーメッセージは、何を意味しているのですか。
マニュアルも検索してみたのですが、探し方が悪いのか
見つかりません。
御教授宜しくお願いします。
[5971] Re: Startup failed. とは 投稿者:Irisawa 投稿日:06/07/28(金) 21:54
> 表記のエラーメッセージは、何を意味しているのですか。
> マニュアルも検索してみたのですが、探し方が悪いのか
> 見つかりません。
start.axをpackfileに入れずにEXEにしたとか、start.axのない状態で
HSPデバッグランタイムを直接実行した場合などに表示されます。
(つまり、start.axが見つからないという意味です)
また、直接は関係ないのですがHSPではアイコンリソースを1つしか
入れられず、ResourceHackerなどで複数入れると強制終了したと思い
ます。
[5992] Re^2: Startup failed. とは 投稿者:白岩 康平 投稿日:06/08/03(木) 00:36
irisawaさん、ありがとうございます。亀res で申し訳ありません。いろ
いろ試しているうちに、遅くなってしまいました。
実は、hsp3.0に同梱されていた「hsed3le.exe 」でスクリプトを読み込
み、f6で実行するとこの減少が起きます。また、あるホルダでは、どのスク
リプトを実行しても、特定のスクリプトが実行されます。これは、どうやら
hsptmpやhsptmp.iなどが影響しているようです。
何かファイルが足りないのか、ほかのソフトが邪魔しているのか、原因
がわかりません。スクリプトエディタの設定の問題でしょうか?ちなみに、
2台のパソコンで同じような現象が起きています。使用環境は、1台は、xpホ
ームエディション、1台がxpプロエディションです。また、「hsed3.exe」で
も結果は同じでした。
start.axはh> start.axをpackfileに入れずにEXEにしたとか、start
.axのない状態で
> HSPデバッグランタイムを直接実行した場合などに表示されます。
> (つまり、start.axが見つからないという意味です)
>
> また、直接は関係ないのですがHSPではアイコンリソースを1つしか
> 入れられず、ResourceHackerなどで複数入れると強制終了したと思い
> ます。
irisawaさん、ありがとうございます。亀res で申し訳ありません。いろ
いろ試しているうちに、遅くなってしまいました。
実は、hsp3.0に同梱されていた「hsed3le.exe 」でスクリプトを読み込
み、f6で実行するとこの減少が起きます。また、あるホルダでは、どのスク
リプトを実行しても、特定のスクリプトが実行されます。これは、どうやら
hsptmpやhsptmp.iなどが影響しているようです。
何かファイルが足りないのか、ほかのソフトが邪魔しているのか、原因
がわかりません。スクリプトエディタの設定の問題でしょうか?ちなみに、
2台のパソコンで同じような現象が起きています。使用環境は、1台は、xpホ
ームエディション、1台がxpプロエディションです。また、「hsed3.exe」で
も結果は同じでした。h> start.axをpackfileに入れずにEXEにしたとか
、start.axのない状態で
> HSPデバッグランタイムを直接実行した場合などに表示されます。
> (つまり、start.axが見つからないという意味です)
>
> また、直接は関係ないのですがHSPではアイコンリソースを1つしか
> 入れられず、ResourceHackerなどで複数入れると強制終了したと思い
> ます。
irisawaさん、ありがとうございます。亀res で申し訳ありません。いろ
いろ試しているうちに、遅くなってしまいました。
実は、hsp3.0に同梱されていた「hsed3le.exe 」でスクリプトを読み込
み、f6で実行するとこの減少が起きます。また、あるホルダでは、どのスク
リプトを実行しても、特定のスクリプトが実行されます。これは、どうやら
hsptmpやhsptmp.iなどが影響しているようです。
何かファイルが足りないのか、ほかのソフトが邪魔しているのか、原因
がわかりません。スクリプトエディタの設定の問題でしょうか?ちなみに、
2台のパソコンで同じような現象が起きています。使用環境は、1台は、xpホ
ームエディション、1台がxpプロエディションです。また、「hsed3.exe」で
も結果は同じでした。h> start.axをpackfileに入れずにEXEにしたとか
、start.axのない状態で
> HSPデバッグランタイムを直接実行した場合などに表示されます。
> (つまり、start.axが見つからないという意味です)
>
> また、直接は関係ないのですがHSPではアイコンリソースを1つしか
> 入れられず、ResourceHackerなどで複数入れると強制終了したと思い
> ます。
irisawaさん、ありがとうございます。亀res で申し訳ありません。いろ
いろ試しているうちに、遅くなってしまいました。
実は、hsp3.0に同梱されていた「hsed3le.exe 」でスクリプトを読み込
み、f6で実行するとこの減少が起きます。また、あるホルダでは、どのスク
リプトを実行しても、特定のスクリプトが実行されます。これは、どうやら
hsptmpやhsptmp.iなどが影響しているようです。
何かファイルが足りないのか、ほかのソフトが邪魔しているのか、原因
がわかりません。スクリプトエディタの設定の問題でしょうか?ちなみに、
2台のパソコンで同じような現象が起きています。使用環境は、1台は、xpホ
ームエディション、1台がxpプロエディションです。また、「hsed3.exe」で
も結果は同じでした。start.axはhsptv フォルダにあります。
[5993] Re^3: Startup failed. とは 投稿者:白岩 康平 投稿日:06/08/03(木) 00:45
すみません。操作ミスで何度も同じ文を入力してしまいました。
お見苦しく申し訳ありません。
[5994] Re^4: Startup failed. とは 投稿者:naznyark 投稿日:06/08/03(木) 01:35
> f6で実行すると
F6『実行』でなく f5『コンパイル + 実行』をしてください。
『コンパイル + 実行』
現在エディタで編集中のソース
↓
(コンパイル作業)
↓
ソースを元に start.ax ファイル(+他のファイル)を作成
↓
start.ax ファイルの内容に基づきプログラムが実行される。
『実行』
編集中のソースと関係なく現在のカレントフォルダにある start.ax
ファイルの内容に基づきプログラムが実行される。
[5995] Re^5: Startup failed. とは 投稿者:白岩 康平 投稿日:06/08/03(木) 09:30
うまくいきました。ありがとうございます。
1年余りもほうりっぱなしにしていたので、カビでも生えてしまったかと思いました。私は何を勘違いしていたんでしょうね。大変お騒がせしました。
[5968] Re: Startup failed. とは 投稿者:kz3 投稿日:06/07/28(金) 14:35
スタートアップに失敗した、実行開始に失敗した、という意味になります。
[5970] Re^2: Startup failed. とは 投稿者:hiroki 投稿日:06/07/28(金) 17:01
パックファイルのファイル名に全角を使用し、
それをアクセスしたときにこのエラーが出た
ことがあります。
[5969] Re^2: Startup failed. とは 投稿者:kz3 投稿日:06/07/28(金) 14:38
>Startup failed. とは
スタートアップに失敗した、実行開始に失敗した、という意味になります。
# No.5968の記事は削除キー未設定のため削除できませんでした...
# 削除お願いします。
[5984] ChdirのError12を避ける方法を教えて下さい。 投稿者:KUNKUN 投稿日:06/07/31(月) 00:29
初めまして
今、指定したディレクトリ以下の全てのサブディレクトリ名を取得
するスクリプトを書いています。
selfolderでフォルダ選択ダイアログを表示させて任意の選択したデ
ィレクトリへchdirで移動し、dialistでサブディレクトリ名を取得す
るという手順をフォルダ数分繰り返す流れです。
この場合、ドライブ内の全てのフォルダのリストを得ようとして、"
C:\System Volume Information\"にchdirで入ろうとすると当然Error
12ダイアログが開いてそこでストップしてしまいます。chdir命令を
実行する前に"System Volume Information"のようなアクセスを拒否
するディレクトリかどうかを判別してchdir命令を回避する方法がな
いでしょうか?
ご教授のほどよろしくお願いします。
[5988] Re: ChdirのError12を避ける方法を教えて下さい。 投稿者:hiroki 投稿日:06/07/31(月) 10:09
; こんなのはダメなんでしょうか?
; 僕はこれでことたりてます。
; *erに行かないエラーもありますが・・・。
onerror gosub *er
; 処理
chdir dir
if ern=12 {
ern=0
; 処理
}
; 処理
*er
if err=12 : ern=12 ; こうしないと、いつまでたっても err が 12 のまま
return
[5989] Re^2: (訂正)ChdirのError12を避ける方法を教えて下さい。 投稿者:hiroki 投稿日:06/07/31(月) 12:57
> *er
> if err=12 : ern=12 ; こうしないと、いつまでたっても err が 12 のまま
> return
*er
if err=12 {
ern=12
} else {
; 処理
}
return
[5991] Re^3: (訂正)ChdirのError12を避ける方法を教えて下さい。 投稿者:KUNKUN 投稿日:06/07/31(月) 23:05
onerrorという命令があるとは知りませんでした。ものの見事にエラー回避
できました。もっと調べてから投稿すべきでした。申し訳ありませんでした
。
[5986] Re: ChdirのError12を避ける方法を教えて下さい。 投稿者:Mizki_F 投稿日:06/07/31(月) 05:39
GetFileAttributesを使ってファイルやフォルダの属性を調べることができます。
FILE_ATTRIBUTE_SYSTEM属性を持つ場合にchdirを回避するようにすれば対応でき
るのではないでしょうか。
[5990] Re^2: ChdirのError12を避ける方法を教えて下さい。 投稿者:KUNKUN 投稿日:06/07/31(月) 23:02
http://www.kct.ne.jp/~okuda/tips/tips15.html
のサンプルスクリプトを参考すればディレクトリのシステムフォルダ属性を得ることが出来そうです。ありがとうございました。
[5965] DLLファイル 投稿者:sword 投稿日:06/07/27(木) 11:47
DLLファイルが、足り無いんですけど、どうすれば入手できますか。
[5966] Re: DLLファイル 投稿者:Irisawa 投稿日:06/07/27(木) 11:58
> DLLファイルが、足り無いんですけど、どうすれば入手できますか。
単に足りないと言われても何が足りないのか書かないと誰にも答えら
れませんよ。
[5961] エラーメッセージについて 投稿者:ロッカー 投稿日:06/07/25(火) 22:20
はじめまして。
HSP,手軽にGUIが構築できるのでとても重宝しています。
さて、次のようなエラーメッセージが出るのですが、
この(1)というのは何を意味するのでしょうか?
内部エラーが発生しました(1)
HSPヘルプのキーワード検索で、errと入力すると、
「HSP のエラーコードです。エラーコードとメッセージの対応については、別途マニュアルを参照してください。」
とありますが、マニュアルを見ても見つけられませんでした・・・
そなたかご教授ください!
[5962] Re: エラーメッセージについて 投稿者:Irisawa 投稿日:06/07/26(水) 00:02
> HSPヘルプのキーワード検索で、errと入力すると、
> 「HSP のエラーコードです。エラーコードとメッセージの対応に
> ついては、別途マニュアルを参照してください。」
> とありますが、マニュアルを見ても見つけられませんでした・・・
HSPプログラムガイドの「4.HSPの基本動作概念 」の
「エラーメッセージ」に書いてあります。
[5963] Re^2: エラーメッセージについて 投稿者:ロッカー 投稿日:06/07/27(木) 00:51
Irisawa様
ありがとうございます!これですね。このエラー番号はエラーコードのことだったんですね。でもこれじゃあ、こちらのせいじゃなさそうですね。。。
1 "システムエラーが発生しました"
通常は表示されないエラーです。ファイルが破損している場合や、
予期しない事態が起こった時に表示されます。
[5964] Re^3: エラーメッセージについて 投稿者:Irisawa 投稿日:06/07/27(木) 02:00
> ありがとうございます!これですね。
> このエラー番号はエラーコードのことだったんですね。
> でもこれじゃあ、こちらのせいじゃなさそうですね。。。
確かに結構分かりづらいみたいで、難しいようですがデバッグ時
(スクリプトソースから直接コンパイル&実行=デバッグ用ランタイムで
実行した時)のみ正式なエラーメッセージが表示され、packfileを埋め
込んでEXEにするとエラーメッセージが「内部エラー(error No)」と
なってしまい、混乱の元なんですよね。
まあ、これはそもそもエラーメッセージはデバッグして表示されない
ようにするのが一番好ましいのですが...。
あと、EXEにすると行番号などのデバッグ情報は含まれないのでそれらも
表示されません。
> 1 "システムエラーが発生しました"
error No1はNULLポインタを直接操作した場合などOSレベルで問題の
ある記述(HSPで把握しきれない部分)やHSPインタプリタ自体の不具合に
よる発生がほとんどです。
HSP3.xxはまだいろいろ不安定でよくerror 1をだしたりします。
あと、HSPシステムで必須のファイルが足りないなどで発生することも
あります。
使用しているHSP拡張ランタイムやモジュールなどの相性や不具合で
発生することもあるので実際の原因を完全に把握することは難しい
です。
エラーのでる最小限のスクリプトを使用して検証を行いどこでエラーに
なっているのかをしっかりと確認してください。
# プログラムというのはエラーのでている行が問題とは限らず、別の
# 行の記述が原因で他の場所でエラーになることもあります。
# HSPの場合は表示される行番号自体がずれたりしますのであまり宛に
# なりません。
[5958] split関数の自作について... 投稿者:貝猫 投稿日:06/07/25(火) 11:15
初めまして。貝猫と申します。
他の言語ではよく見られる関数に、指定した文字列を区切り文字として、別の文字列を分割する(perlでいうsplit関数)ものがあるのですが、HSPだと区切り文字がカンマに限られてしまうみたいですね。
それで他の文字でも区切れるようにしようと関数を定義してみたのですが、エラーが出てしまいます。
「#Error 18 in line 0(hspdef.as)
--> 代入できない変数名を指定しています」
と表示されます。
予約語一覧で調べてはみたものの・・・思い当たらず、行き詰ってしまいました。
以下のようなコードなのですが・・・よろしければ、問題点の指摘をお願い致します。
#include "hspda.as"
#defcfunc split str cont,str cut;contにsplitしたい文字列、cutに区切り文字を取得
str cont2 = ""
cont += "%%";文末を認識するための文字列を付加
repeat
if strmid(cont,cnt,2)="%%" : break
if strmid(cont,cnt,1)=cut : cont2 += "," : else : cont2 += strmid(cont,cnt,1)
loop
csvnote content,cont2
return content
stop
[5959] Re: split関数の自作について... 投稿者:あんすこえむ 投稿日:06/07/25(火) 17:43
まず文法的な問題点。
(1) #include "hspda.as" より return content までを#moduleと#globalで括る。
(2) str cont2 = "" の strは要らない(エラー18の原因)。
(3) 文字列(str)で受けるとcont+="%%"のような操作はNG。
別名(例えばstr pconf)で受けて、cont=pconf+"%%" とかにする。
(4) csvnoteに与える変数contentは、文字列型で初期化しておく。
アルゴリズム上の問題点。
(1) 文字列長をstrlen関数で得てRepeat-loopすれば、"%%"は不要。
(2) 区切り文字を","に置き換える方法だと、個々の文字列に","を
含められない。終端の"%%"も同様。
任意の区切り文字で文字列を抜き出す命令としてgetstr があります。
Helpを調べてみてください。
[5960] Re^2: split関数の自作について... 投稿者:貝猫 投稿日:06/07/25(火) 19:57
ご指導ありがとうございます!
早速試してみます!
[5916] 実行用ランタイムファイルが見つかりません? 投稿者:しなちく 投稿日:06/07/17(月) 01:36
過去ログで同じ質問がありましたが、レスがひとつも付いていないので未解決トピックだと思いますが、私もスクリプトエディッタで編集後に「HSP実行」をしても、「実行用ランタイムファイルが見つかりません」となり、お手上げです。
どなたか、解決策をご存知の方、宜しくお願いします。
OS:WinXpPro
HSP:HSP3.1b4
[5917] Re: 実行用ランタイムファイルが見つかりません? 投稿者:naznyark 投稿日:06/07/17(月) 02:28
情報が少なすぎます。
とりあえず適当なドライブの直下に半角英数で test という名のディレクトリを作り
その中に hsed3.exe, hsp3.exe, hspcmp.dll の3つのファイルをコピーして
HSPスクリプトエディタが起動していない状態で
hsed3.exe を実行 -> (何もスクリプトがない状態で)F5(コンパイル+実行) を試してみてください。
これで同様のエラーが出るなら私にはよくわからない状況です。
[5920] Re^2: 実行用ランタイムファイルが見つかりません? 投稿者:しなちく 投稿日:06/07/17(月) 22:54
> とりあえず適当なドライブの直下に半角英数で test という名のディレクトリを作り
> その中に hsed3.exe, hsp3.exe, hspcmp.dll の3つのファイルをコピーして
> HSPスクリプトエディタが起動していない状態で
> hsed3.exe を実行 -> (何もスクリプトがない状態で)F5(コンパイル+実行) を試してみてください。
ご指示通りにしましたら、正しく実行中の無地ウィンドウが表示され、デバッグウィンドウも表示されます。これはいったいどういうこと・・・?
当初、ダウンロードした3.0ではインストーラーパッケージだったので、デフォルトのまま「\Program Files\hsp30」に全て落とし込んだのですが、もしかしたらディレクトリにスペースが含まれるとダメということでしょうか?
下手にいじくると怖いので、今はそのまま「\test」に3つのファイルを入れて、実行確認ができた状態のままにしてあります。
やはり、新しいディレクトリに移動した方がよいのでしょうか?
ご助言の程宜しくお願いします。
[5921] Re^3: 実行用ランタイムファイルが見つかりません? 投稿者:naznyark 投稿日:06/07/18(火) 02:04
> やはり、新しいディレクトリに移動した方がよいのでしょうか?
試しにやってみてそれで問題が解決するならそれでよいと思います。
> もしかしたらディレクトリにスペースが含まれるとダメということでしょうか?
そういうことはないと思います。
それよりも 3.0 と 3.1b4 のどちらの話ですか?
> OS:WinXpPro
> HSP:HSP3.1b4
> 当初、ダウンロードした3.0ではインストーラーパッケージだったので、
情報が少ないと答えられることでも答えようがありません。
問題が生じたときは状況をできるだけ詳しく説明したほうが適切な回答を得られやすいです。
[5922] Re^4: 実行用ランタイムファイルが見つかりません? 投稿者:しなちく 投稿日:06/07/18(火) 03:45
> それよりも 3.0 と 3.1b4 のどちらの話ですか?
説明の要領が悪くて申し訳ありません。
現在の最新の状態が
> > HSP:HSP3.1b4
ということで
> > 当初、ダウンロードした3.0ではインストーラーパッケージだったので、
というのは、元々3.0のバージョンをインストールしたところへ新たに3.1b4を上書きインストール(解凍)した、という経緯です。
どのような情報を挙げれば適切な助言が得られるのか良く分からないのですが、ディレクトリ内部のファイル名を全部書き出したらよいのでしょうか。
流れとしては、以前2.61のバージョンを任意のディレクトリで展開していて、そこでは全く問題がなかったのですが、3.0がリリースされたときにダウンロードしたものはアーカイブではなくてインストーラーだったので、解凍を実行したときにデフォルトのままok、okとクリックしていったら勝手に\Program files\hsp30というディレクトリが作成されて、そこにインストールされました。
その時点で既に現象はあったのですが、そのうちバージョンアップで改善されるだろうと気長に待っていたところ、3.1b4リリースされて、それを上書きインストールしても現象が改善されず、仕方なく質問させていただいたというわけです。
なんどかアンインストールしたり、インストールしなおしたりしているのですが、エディッタを起動してF5を押すと「実行用ランタイムファイルが見つかりません」となってしまいます。
パスが通っていないのか、それともディレクトリの場所がまずいのか・・・。
とりあえず、testとしたディレクトリに、解凍されて展開されたフォルダやファイルの全てを移動するとこの現象が再び出てしまうので、余計なものが入っているからのような気がしています。
それを突き止められれば、そのファイルを削除するだけでいけそうな気がするのですが・・・。
(夜が明けそうですが)もう少し、頑張ってみます。
[5939] Re^5: 実行用ランタイムファイルが見つかりません? 投稿者:naznyark 投稿日:06/07/20(木) 01:25
> 余計なものが入っているからのような気がしています。
> それを突き止められれば、そのファイルを削除するだけでいけそうな気がするのですが・・・。
HSP3のインストールフォルダ(hsed3.exe のあるフォルダ)内に
半角英数で hsp3 という名前のディレクトリか、
同じく hsp3 というファイル名の拡張子無しのファイルがあると
ランタイム(hsp3.exe)を認識してくれないようです。
おそらくこれかこれに類する事柄が原因になっているのではないかと思います。
(特定の名前(hsp3 以外にあるのかは不明)のフォルダかファイルが
インストールフォルダ内にあると動作に支障が出る?)
※ちょっと修正
[5950] Re^6: 実行用ランタイムファイルが見つかりません? 投稿者:しなちく 投稿日:06/07/23(日) 14:13
> HSP3のインストールフォルダ(hsed3.exe のあるフォルダ)内に
> 半角英数で hsp3 という名前のディレクトリか、
> 同じく hsp3 というファイル名の拡張子無しのファイルがあると
> ランタイム(hsp3.exe)を認識してくれないようです。
ビンゴでした!
私の環境には\hsp30の直下にhsp3というフォルダが確かに存在してまして
、その中にはc言語用のファイル?らしきものが何個かありました。
hspのプログラミングには直接関係なさそうなので、フォルダごと削除して
みたら、ちゃんと動くようになりました。
本当に、本当に、本当に、ありがとうございました。
おかげさまで今はすごく快調です。
[5946] 文字コピー 投稿者:Roll 投稿日:06/07/21(金) 23:33
拡張プラグインを使わずに、
任意の文字列をクリップボードにコピーする方法はありますか?
[5949] Re: 文字コピー 投稿者:Roll 投稿日:06/07/22(土) 14:19
> 拡張プラグインを使わずに、
> 任意の文字列をクリップボードにコピーする方法はありますか?
いろんな方法があるんですね〜。
標準命令だけで考えていましたが。
やはりメッセージやAPIなどが絡んできますね。
とにかく、ありがとうございました。
[5948] Re: 文字コピー 投稿者:t.hamaguti 投稿日:06/07/22(土) 02:06
> 拡張プラグインを使わずに、
> 任意の文字列をクリップボードにコピーする方法はありますか?
こっそりエディットコントロールを作って、テキストを選択して
コピーコマンドを実行という方法はいかがでしょう?
// エディットコントロールをこっそり作成
s = "Hot\nSoup\nProcessor"
pos -100, -100
mesbox s
wEdit = objinfo(stat, 2)
// EM_SETSELでテキストを選択
sendmsg wEdit, $b1, 0, -1
// WM_COPYでクリップボードにテキストをコピー
sendmsg wEdit, $301, 0, 0
stop
[5947] Re: 文字コピー 投稿者:Steep 投稿日:06/07/22(土) 00:14
> 拡張プラグインを使わずに、
> 任意の文字列をクリップボードにコピーする方法はありますか?
Win32 APIを直接呼び出せば可能。
参考程度にclipset互換のモジュール作ってみた。
#module mod_clipboard
#uselib "kernel32.dll"
#cfunc GlobalAlloc "GlobalAlloc" int, int
#func GlobalLock "GlobalLock" int
#func GlobalUnlock "GlobalUnlock" int
#uselib "user32.dll"
#func OpenClipboard "OpenClipboard" int
#func EmptyClipboard "EmptyClipboard"
#func SetClipboardData "SetClipboardData" int, int
#func CloseClipboard "CloseClipboard"
#const GHND $00000042
#const CF_TEXT $00000001
#deffunc clipsetx str data
len = strlen(data)
hglobal = GlobalAlloc(GHND, len+1)
GlobalLock hglobal
dupptr clip, stat, len, vartype("str")
clip = data
GlobalUnlock hglobal
OpenClipboard hwnd
EmptyClipboard
SetClipboardData CF_TEXT, hglobal
CloseClipboard
return 0
#global
clipsetx "Hot Soup Processor"
[5944] 掲示板の名称変更 投稿者:スポポビッチ 投稿日:06/07/21(金) 12:59
HSPTV掲示板も出来て随分経ったのでこっちの掲示板を以前のように
「β掲示板」と名称変更し主にβ版の動作報告などに利用してもらうのはどうだろうか?
そういうような考えでいるので未だこっちで自分のプログラムについて質問している人はHSPTV掲示板を利用してもらいたい。
[5883] (削除) 投稿者:(削除) 投稿日:06/07/11(火) 13:42
(削除されました)
[5884] Re: notegetが上手く使えません 投稿者:kz3 投稿日:06/07/11(火) 14:12 <URL>
> input UserChoi3,XX,XX,3
> noteget CardInfo3,UsersChoi3
> mes CardInfo3
> とした時だけ、どうして1行目の見出しが表示されるのでしょう?
変数の初期値が0だからです。
[5885] Re^2: notegetが上手く使えません 投稿者:umasika 投稿日:06/07/11(火) 15:00
> > input UserChoi3,XX,XX,3
> > noteget CardInfo3,UsersChoi3
> > mes CardInfo3
> > とした時だけ、どうして1行目の見出しが表示されるのでしょう?
>
> 変数の初期値が0だからです。
有難うございます。
button "計算",*calc
stop
と言うのを一番最後に置いていたのですが、
noteget XXXXXXの前に持って来たら正常に動きました。
初期値がそのまま入ってたんですね。
それに気付かず他の命令を使った複雑怪奇な処理に着手しようとしていました。 orz
[5893] 今度はcsvstrが動きません 投稿者:umasika 投稿日:06/07/12(水) 16:41
お陰さまで、csvファイルから必要な行を変数に入れる事が出来ました。
CardInfoXX
という変数を定義して中身を見るために
mes CardInfoXX とやると
「001風の谷のウマシカ,攻撃力100,200,500,特徴=頭悪い」
の様な感じで表示されます。
そのまま
csvstr NewHairetsu,CardInfoXX
と言うスクリプトを足しました。こうすると、
NewHairetu(0)=001風の谷のウマシカ
NewHairetu(1)=攻撃力100
NewHairetu(2)=・・・・・・・・・・・・以下略
と同じになると思っています。
それで
mes NewHairetsu(0)
とやって実行すると
001風の谷のウマシカ
と表示される筈ですが、出ません・・。
念のためにsdimの記述を先に置いたりして、色んな事をやってみると
「0」だけ表示されたりします。デバッグウインドウを見ると
NewHairetsuの中身は空っぽの様です。????
もちろん最初の行に
#include "hspda.as"と書いてありますし、スクリプトと同じディレクトリに
hspda.asをコピーしてあります。
後は、そんなに間違える所は無いと思うのですが・・。どーしてでしょう。
トホホ
[5894] Re: 今度はcsvstrが動きません 投稿者:kz3 投稿日:06/07/12(水) 16:48 <URL>
現象が確認できる最小のコードを教えてください。( 環境も )
ちなみにHSPTVの掲示板でもcsvstr絡みのスレッドがあるので、そちらも参考にしてみてください。
[5895] Re^2: 今度はcsvstrが動きません 投稿者:umasika 投稿日:06/07/12(水) 19:41
有難うございました。
HSPTVの掲示板のcsvstr絡みのスレッドを見てみました。
こちらの環境はWin200Pro+HSP3.0です。
物理的なメモリーモジュールは1024M積んでいるので、
動画でも扱わない限り、動作が遅くなったりエラーが出る事はありません。
私の場合csvstr以外の場所の記述でケアレスミスをしている可能性があるので
もう一度短いサンプルコードを作り直して実際に動かしてみました。
何故か今度はちゃんと動いてしまいました。しかし本チャン用のと、
どこが違うかわかりません。同じに作ってあるのに・・。もう一回見直してみます。
でもWin2000でcsvstrはヤバイんでしょうか・・。
とりあえずcsvstrの構文の前に、sdimの宣言が無いと動かない点が
納得できないのですが、こんなもんなんでしょうか?
マニュアルのcsvstrの説明を読んだ限りでは、こんなもの必要ない気もします。
そもそもcsvstrを使った時点で、放っといても文字列型になるのですよね。
デフォルトの文字数を定義して、うんぬんと言うのも、巨大なテキストを扱う時の話では・・。
取り込んでいるcsvファイルは全体で42KBしか有りません。
うーん。再現性の無いトラブルに見舞われているのか、自分が凡ミスを繰り返しているだけなのか
ハッキリしません。この後も安定しないようなら、他の命令で代替えした方がイイのかな・・。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include "hspda.as"
mes "調べたいカードのNo.を半角数字で入力してください。\n
mes "カードNo."
input UserChoiced_1,25,20,3
mes "カードNo."
input UserChoiced_2,25,20,3
;ボタンを表示してユーザーに押して貰う
button "調べる",*Look
stop
*Look
;CardList.csvをCardListに読み込む。
;因みにこのテキストファイルは実際にExcel等で開いたり閉じたりして
;使っているものなので、不正に解釈されそうな記号等は、
;可能な限りコンテンツの文字列から取り除いてあります。
notesel CardList
noteload "CardList.csv",
;ユーザーが選んでいるカードの情報を変数に入れる
noteget CardInfo_1,UserChoiced_1
noteget CardInfo_2,UserChoiced_2
;csvstrのスクリプトの前に、念のためにこれから作る配列変数について宣言。
;これがないと実行した時に「無効な配列」というエラーメッセージが出る。
;でも、マニュアルのcsvstrの項を読んだ限りでは、こんなのいらない気もしています。
sdim CelsOut_1,16,7
sdim CelsOut_2,16,7
;CardInfo_Xのセルを配列変数に入れる
csvstr CelsOut_1,CardInfo_1
csvstr CelsOut_2,CardInfo_2
;ここで動作テスト
;テスト1
mes CardInfo_1
;テスト2
mes CardInfo_2
;ここまでのテスト結果はいつも正常
;この先が何だか時々ヘン。これはチャンと動いていますけど・・。
;テスト3
mes CelsOut_1(0)
;テスト4
mes CelsOut_2(0)
stop
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[5896] Re^3: 今度はcsvstrが動きません 投稿者:K 投稿日:06/07/12(水) 22:39
>> ;でも、マニュアルのcsvstrの項を読んだ限りでは、こんなのいらない気もしています。
マニュアルから
>p1で指定される配列変数は、必ず文字列型の配列変数である必要があります。
>配列変数に確保されている文字数や配列の限界を越えた部分は無視されます。
>(エラーになったり、データが破壊されることはありません)
実際の動作は文字数は超えても代入されるし、要素が足りない場合は
「,」が無視されてそのまま全部代入される
csvstr命令では確保も拡張もされません
>sdim CelsOut_1,16,7
「001風の谷のウマシカ」
半角で16文字を越えてませんか?
もっと余裕をもった方いいと思う
(でも文字数無視して代入されるからいんだろうか・・・良くないよなぁ・・・)
後、3.0aでやってみたけど何か変・・・
5895のやつで
sdim CelsOut_2,16,10 の次に
mes CelsOut_1 を追加すると、15文字までしか取り出せない
(CelsOut_2の方も何故か14文字に・・・)
で、色々やった結果 buttonが押された後に wait 10(awaitではない)ぐらい入れて
csvstr を使った後に objsel で入力フォーカスを動かす(なぜかは不明)
HSPobjと相性が悪い感じ・・・(環境依存かもしれないけど)
csvstr CelsOut_1,CardInfo_1
objsel
csvstr CelsOut_2,CardInfo_2
ってやると下のが機能しない(フォーカス移動はstop前でいい)
[5898] Re^4: 今度はcsvstrが動きません 投稿者:K 投稿日:06/07/12(水) 23:33
> > で、色々やった結果 buttonが押された後に wait 10(awaitではない)ぐらい入れて
> > csvstr を使った後に objsel で入力フォーカスを動かす(なぜかは不明)
これは、2回以降の "調べる" を押した時に
csvstr が機能しなくなるのを、防げただけなので役に立つかは
分かりません。
[5899] すごい勘違いをしていたかも知れません 投稿者:umasika 投稿日:06/07/13(木) 01:45
有難うございました。
>配列変数に確保されている文字数や配列の限界
というのは自分で定義するものなのですね。
HSPの仕様上の限界の事だろうと思っていましたが、
完璧な勘違いでした。sdimやdimはそのためにあるのですね。
ただsdim宣言をした上でも、
>越えた分は無視されます
以上の事が起きているので、混乱していましたが、とにかく
「切りの良い所で16バイトにしていおいて後で数えよう」という発想はヤメます。
あ、もしかしたらsdimの方の説明にある「自動拡張」というのは、
配列全体の最初から最後までの文字量の事で、個別の変数の量とは無関係なのかな?。
あ、あ、sdimで定義するのは個別の変数(セル)の長さではなく、データレコード全体の事なんだ。
だからマニュアルには「sdim a,5000」なんて豪華な予約数字が入ってるんですよ・・きっと。
自動拡張できると言ってもデータレコード全体で、デフォルトが16バイトなんて、ケチな指定をしたから、不安定になったんですよ。きっと・・。
あれ?じゃあ、csvstrの説明にある
>配列変数に確保されている文字数や配列の限界
っていうのも、一つ一つの変数じゃなくて、配列に含まれる全ての変数を足したモノの話? ですか?
じゃあ「越えた分が無視される」というのは、配列に含まれる変数の個数の事とか?
Kさんが試して下さった14文字や15文字で切れてしまう現象の、説明にはならないけど、これはやっぱり「データレコード全体で16バイト」
という極端にケチな指定のせい。かも? かな?
そんな気がする。これでダメだったら、csvnoteの方も試してみます。
ところで、ツール系のサンプルコードって、あんまり無いですね。
画像系のは多いけど・・。一つ一つの説明は読んでも、組合せ方が
イマイチわからない・・。PerlやC++に詳しい人から見たら、当たり前の事なのかな??
[5900] Re: すごい勘違いをしていたかも知れません 投稿者:naznyark 投稿日:06/07/13(木) 02:11
> 「切りの良い所で16バイトにしていおいて後で数えよう」という発想はヤメます。
> あ、もしかしたらsdimの方の説明にある「自動拡張」というのは、
> 配列全体の最初から最後までの文字量の事で、個別の変数の量とは無関係なのかな?。
>
> あ、あ、sdimで定義するのは個別の変数(セル)の長さではなく、データレコード全体の事なんだ。
> だからマニュアルには「sdim a,5000」なんて豪華な予約数字が入ってるんですよ・・きっと。
>
sdim でのデフォルト文字数は配列の場合は要素一つあたりの数値です。
(ちなみに最低値は 64 でそれ以下の数値を指定しても64バイト確保されます。)
(例)
sdim test, 128, 10 とすると
test(0) (128文字) , test(1) (128文字) , ... , test(9) (128文字)
と合計 128 * 10 = 1280 バイト分のバッファが確保されます。
(ただしメモリの中ではそれぞれの要素に対するバッファは連続していません)
そして自動拡張は要素一つごとに行われます。
(上の例に続いて)
test(1) = (256文字の文字列) とすると
デフォルト値より長い文字列ですので test(1) のバッファのみ
自動拡張されます。(他の要素のバッファサイズには影響ありません。)
それと私の環境でも csvstr は動作が安定していないようです。
HSPTVの掲示板の記事などを参考にして csvstr を使わずに処理したほうが良さそうです。
#module
#deffunc df_csvstr array _p1, var _p2
_ai=0
_si=0
repeat
getstr _p1(_ai), _p2, _si, ','
if (strsize) {
_ai++
_si+=strsize
} else {
break
}
loop
return
#global
[5901] Re^2: すごい勘違いをしていたかも知れません 投稿者:umasika 投稿日:06/07/13(木) 05:54
あい、わかりました。csvstrはあきらめます。ありがとうございました。
諸先輩方が相次いでヤラているものに関わって、時間を無駄にしても仕方無いですね。他の方法を考えます。
仮に今動いても、環境や条件が変わると、どうなるかわからないし、少なくとも次期バージョンの正式リリースまで、こいつは封印ですね。
[5905] Re^3: すごい勘違いをしていたかも知れません 投稿者:GENKI 投稿日:06/07/13(木) 19:37
> あい、わかりました。csvstrはあきらめます。ありがとうございました。
csvstrが不安定なら自作するまでです。それほど難しいことはやってませんし。
せっかくnaznyarkさんが自作csvstrのスクリを貼り付けてくれてるんでそれを使ってもよいのでは。
[5912] ご安心を 投稿者:風の谷のumasika 投稿日:06/07/14(金) 19:35
> せっかくnaznyarkさんが自作csvstrのスクリを貼り付けてくれてるんでそれを使ってもよいのでは。
あ。そういう意味ですか。やっと分かりました。今、マニュアルの「モジュール機能ガイド」の所を読んでいます。(爆)
お二人とも有難うございます。
「モジュール機能ガイド(中上級者向け)」の冒頭には「初心者がこんな所を読んでも、どーせわからんからヤメテおけ」
といった様な事が、婉曲な表現で書かれていますが、嫌がらせに屈する事無く、読み進んでいます。
最初から付いているcsvstrは諦めましたが、いずれにしても制作自体は断念していないのでご安心を。
[5913] Re: ご安心を 投稿者:GENKI 投稿日:06/07/14(金) 21:28
> いずれにしても制作自体は断念していないのでご安心を。
安心しましたー。
これ1つのためにソフト作成を諦めるのはもったいないーっと思ってたので。
作成がんばってください。
ちなみにモジュールは自分で作るのはちょっと大変ですが、
使うだけに関しては簡単です。
スクリプトの始めにモジュールを書いて、その後自分のプログラム本体を書くだけ。
モジュールで作った命令は普通のHSPの命令と同じに使えます。
たとえば、naznyarkさんのサンプルだとそのままcsvstrと同じ文法で使えます。
;--------------------------------------------
;##########################
;ここからモジュール
#module
#deffunc df_csvstr array _p1, var _p2
_ai=0
_si=0
repeat
getstr _p1(_ai), _p2, _si, ','
if (strsize) {
_ai++
_si+=strsize
} else {
break
}
loop
return
#global
;モジュールここまで
;##########################
;##########################
;ここからプログラム本文
sdim aa,256
sdim bb,256,10
aa = "123,456,789,12564"
df_csvstr bb,aa ;モジュールで作った命令を使う
repeat 4
mes bb(cnt)
loop
stop
;--------------------------------------------
モジュールで作った命令の使い方はたいてい作者が書いたマニュアルに載ってる。
ちなみにこんなのもUPしたのでよかったらどうぞ。
http://hspwiki.nm.land.to/?String%2FCSV%B7%C1%BC%B0%A5%C7%A1%BC%A5%BF%A4%CE%C6%C9%A4%DF%B9%FE%A4%DF
[5926] ()の使い方について 投稿者:風の谷のウマシカ 投稿日:06/07/18(火) 23:54
お陰さまで制作の方はボチボチ進んでいます。
csvstrの問題はnaznyarkさんのモジュールを使わせて戴いて上手く
クリアできました。とりあえず私のケースでは、操作対象のtxtファイルの中身が全部把握できているので、構文がやさしい方を使わせて戴きました。
他の所でも色々と頭を抱えているので、問題の切り分けに時間がかかり、
ご報告が遅れて失礼しました。
GENKIさんがwikiにアップされたモジュールも拝見しました。
表計算ソフトの関数や演算は、一般的なアプリケーションのユーザーに
とって、最も身近なCUIの一つだと思います。
EXCELから入って言語に興味を持つ人は、csv命令が不安定だと、
入門してイキナリ地雷を踏む羽目になるので、こういったモジュールが
wikiで公開される意味は、とても大きいと思います。
折角なので、ただ使わせて戴くだけでなく、中身も理解して
おきたいのですが、一気には無理ぽいですね。とりあえず資料が
見つけられなくて困った所を、どなたか教えて戴けないでしょうか。
;;;;;;;;質問( )の使い方について;;;;;;;
naznyarkさんのモジュールに
if (strsize) {
というのがありますよね。
if strsize!0 {
と言う意味に理解していますが、合っていますか?
それと、こういう( )の使い方に関する資料って、どこを見れば
紹介されているでしょう?
( )は演算の優先順位を指定する時に使われたり、配列の要素を
指定する時にも使われたりするので、私の場合、色々な
サンプルスクリプトを見ている時に、躓きの元になりやすいです。
上の様な使い方って、添付マニュアルには載っていませんよね?
[5927] Re: ()の使い方について 投稿者:GENKI 投稿日:06/07/19(水) 01:14
> GENKIさんがwikiにアップされたモジュールも拝見しました。
必要に応じてってことで。
> naznyarkさんのモジュールに
> if (strsize) {
> というのがありますよね。
> if strsize!0 {
> と言う意味に理解していますが、合っていますか?
HSPのifの条件文は真は0以外の値、偽りは0としているようです。
なので上のほうの条件文の書き方でも特に問題ありません。
ただ、なれないうちは明確なスクリプトを書いたほうがいいと思うので
下側の書き方をしたほうがいいでしょうね。
カッコについていえば
> if (strsize) {
は
if strsize {
でもokです。
条件式内でのカッコは数学のカッコと同じような扱いです。なのでこの場合なくてもいい。
カッコをつけてるのはカッコの付け忘れ防止のための習慣だと思います。
> それと、こういう( )の使い方に関する資料って、どこを見れば
> 紹介されているでしょう?
カッコの扱いはCなどのほかの言語とほぼ同じです。
Excelも同じですね。
もっと身近なところでいえば数学と同じです。
f(x,y) = a*x + b*y ;関数のイメージ
x = a * (b + c) ;計算や条件式でのカッコ
配列で括弧を使うときもだいたい似たようなものです。
数学苦手な人や習ってない人もおおぜいいるのでこの説明もどうかなと思いますが…まあこんなとこです。
ただ数学と違って中カッコ({〜})や大カッコ([〜])は使用しません。
ちなみに括弧の使い方は、「プログラミングマニュアル1・基本仕様ガイド (hspprog.htm) 」にも載ってます。
それと、HSP開発Wikiの資料です。
http://hspwiki.nm.land.to/?%BF%BF%B5%B6%C3%CD%A5%DE%A5%B9%A5%BF%A1%BC
http://hspwiki.nm.land.to/?%BE%AE%A5%EF%A5%B6%2F%A5%D3%A5%C3%A5%C8%C1%E0%BA%EE#y480a09f
あ、質問内容変えるなら新規がよかったかも。
[5929] お礼 投稿者:風の谷のウマシカ 投稿日:06/07/19(水) 18:27
有難うございました。
0はFALSEで、0以外なら強引に(と自分には思える)TRUE扱いなんですね。
( )の問題じゃなくて、主に条件文の問題だったのか・・。
>質問内容変えるなら新規がよかったかも。
そうですね。( )がわからないのか、条件文がわからないのか、
何がわからないか、わからない状態だとツリーの適切な立て方も迷ったりして・・。悲
時々「質問が曖昧で、何がわからないか、わからないから、どう答えたら良いかわからない」
というスレを見かけますが、そういう質問しちゃう人の、気持はわかる。
(ちょっと日本語の構文が高度(?)ですか、ついて来れてますか? (汗)
(あ、カッコのネストがヘン。これもエラーになりそう・・。)
適切な質問の仕方を考える事は、問題の捉え方を考える事にもなるので、がんばります。
また宜しくお願いします。
[5938] Re: お礼 投稿者:naznyark 投稿日:06/07/20(木) 01:02
> if (strsize) {
> というのがありますよね。
> if strsize!0 {
> と言う意味に理解していますが、合っていますか?
GENKIさんの説明もありましたし、疑問は解決したようですが私なりに説明しておきます。(長いです)
まず次の2つの記述の違いについて説明します。
・if strsize ; (a)
・if strsize!0 ; (b)
(a) (b) の違いを知るためには次の事柄を理解してください。
1 if 命令の動作
if 命令の構文は次のようなものです
if 条件式
条件式の値が非 0 ( 0 以外)のときそれ以降の命令が実行されます。
2 式の値
式が変数や定数だけのときはその内容の値そのものが式の値に、
式が数式の場合は計算をした結果の答えの値が式の値になります。
3 比較演算子( ! = < <= > >= )
比較演算子は四則演算子( + - * / )などと同様に
2つの値の間で計算を行って答えの値を求めるものです。
( ! 演算子は2つの値が等しければ 0、等しくなければ非 0 (値が数値の場合は 1)
が答えの値になる計算を行う演算子です。)
以上の 1 2 3 を踏まえて (a) (b) は内部的には次のように処理されています。
・if strsize ; (a)
strsize の内容の値を調べて値が非 0 のとき以降の命令を実行します。
・if strsize!0 ; (b)
まず strsize!0 という計算を行います。
その計算の結果の値を調べて値が非 0 のとき以降の命令を実行します。
結果的には同じ動作になりますが (a) のほうが計算を行わない分処理が早くなります。
(理論上の話で実際のところはほとんど差はありません。)
続いて次の2つの記述の違いについて説明します。
ただしこの違いは私の個人的な考え方に基づく記述上の違いであって
プログラムの動作としては全く同じものということになります。
・if strsize ; (a)
・if (strsize) ; (a')
4 ()
()は数式内での計算順序を指定するものですが計算順序に影響しないところに
余分につけてもプログラムは問題なく動作します。
(例) 次の記述は全て同じ動作になります。
a=5+10 a=(5+10) a=(5)+(10) a=((5)+(10))
もっともわざわざ a=(((((5+10))))) のような記述をして()の数があわないことによる
エラーを出しやすくするのはバカバカしいので普通はやらないことです。
(以降は私の個人的な考え方です)
4 の説明を読むとプログラムの動作的には (a') のような記述をする意味が
無いように思うかもしれませんが意味はあります。
それはプログラムの読み手に向けた意味です。
私はHSPプログラムを記述するうえで自分の私的な決まりとして
・if の条件式が比較演算子を含まないときは条件式を()で囲む
というようにしています(もっともやっていないときも多いですが・・・)。
こうした決まりを設けておくとデバッグなどで後からプログラムを読み返したときに
その意味するところがわかりやすくなります。
(例 1) 上記の決まりなしで記述したプログラム
if a ; a の値が 0 か非 0 かを判断している
if b=10 ; b の値が 10 かどうかを判断している
if c-100 ; c-100 の値が 0 か非 0 かを判断している?・・・、
いや、c=100 のタイプミスなのでは?・・・。
(例 2) 上記の決まりに基づいて記述したプログラム
if (a) ; a の値が 0 か非 0 かを判断している
if b=10 ; b の値が 10 かどうかを判断している
if c-100 ; c=100 のタイプミスの可能性が高い
if (c-100) ; c-100 の値が 0 か非 0 かを判断している
こうした考え方をもとにして私は (a') のような記述をしています。
(もっともこうした私的な決まりに基づく記述は他人にとっては
かえって読みにくくなることがあるので多用すべきものではありません。)
[5943] Re^2: お礼 投稿者:風の谷のウマシカ 投稿日:06/07/20(木) 18:30
ありがとうございます。
そう言えば、コンピューターの基本は
電流0・・・・・OFF
電流あり・・・・ON(少しくらい波形が乱れて電流の値が増減してもONはON)
ですね。こっちの決まりの方がプリミティブなのかも知れませんね。
表計算やデータベースのアプリケーションで比較演算子の無い条件文を入れると
エラーになりますが、あっちはTRUEかFALSEの2値しか出て来ませんね。
(結論)
同じifでも「ONかOFFかを問うif」と「TRUEかFALSEかを問うif」は違う。
「HSPのifはONかOFFを問うif」
と考えたらスッキリ爽快ですね。
[5911] 最初の質問の再掲(誤って消してしまいました 投稿者:風の谷のumasika 投稿日:06/07/14(金) 19:33
notegetが上手く使えません umasika
はじめまして。プログラミングもHSPも初心者です。3日ほど前からいじり始めています。
最初のうち、私は絵心も無いので勉強するならPerlでいいかな? と思っていましたが、添付のオンラインマニュアルの親切さはHSPがピカイチですね。
素晴らしいです。独学で進むなら断然HSPですね。
それで今、あるカードゲームのユーティリティを作り始めています。と言っても、ゲーム本体のSaveデータをイジル用なものは合法・違法を問わず
作れないので、自分で集めたカード情報のcsv形式のデータベースから、カードの能力を調べたり集計できる様にする簡単なものです。既にカードの
データベースがあるので、notepad命令やcsv命令を使えば、すぐできると思っていましたができません。なんででしょう・・。ソースコードは以下の
ような感じです。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;ユーザーが調べたいカードのゲーム内におけるID番号を入力してもらう。
mes "調べたいカードの番号を半角数字で入力してください。"
input UserChoi1,XX,XX,3
input UserChoi2,XX,XX,3
input UserChoi3,XX,XX,3
;この調子でテキストボックスを約20個程並べました。
;自分で作ったCardList.txtをCardListに読み込む
notesel CardList
noteload "CardList.txt",
;CardList.txtはそれぞれの列がコンマ区切りになっています。一行目は見出し行なので無視。2行目以下はゲーム内のID番号順にカード情報をソート済みなので、各行のインデックスとカードの正式IDが一致するようにしてあります。
;ユーザーが選んだカードの情報を読み込む
noteget CardInfo1,UsersChoi1
noteget CardInfo2,UsersChoi2
noteget CardInfo3,UsersChoi3
;ユーザーがテキストボックスに入れた数字を、そのままカードリストのインデックスに使おうと思いました。そのためテキストボックスの数と同じだけ、noteget命令を並べました。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ここからcsv命令を使って「CardInfoXXX」の各セル(Excel風に言う所の)を配列にする計画です。しかし、ここで問題発生。「CardInfoXXX」に
ちゃんと情報が入っている事を確かめる為に、
mes CardInfo3
とやっても4行目の内容は表示されず、一行目の見出し行が表示されてしまいます。
notegetの記述を疑って
mes CardInfo3
とやりますと、ちゃんと4行目が表示されました。もしかしたらnotegetの2番目のパラメーターに変数は使えない? いやいや色々なサンプルコードを見ると、
よくa=idxなんて変数をインデックスに使っていますよね。
ではテキストボックスから拾ってnotegetのパラメーターに使っているUsersChoiXに問題があるかと思い、下記の様に試しました。
mes UserChoi1+UserChoi2
インデックスなんて足算して、どうするんだというツッコミは無しで、とにかくこれでテキストボックスに入力した値の足算ができる事がわかりました。
つまりUserChoi1もUserChoi2も、ちゃんと値が入っていて、足算ができるくらいだから、数値型になっていると思います。
では
noteget CardInfo3,UsersChoi3
mes CardInfo3
とした時だけ、どうして1行目の見出しが表示されるのでしょう? どなたか、教えてもらえないでしょうか?
[5940] 127.0.0.1 投稿者:HSP半年の人 投稿日:06/07/20(木) 15:59
いま、HSPsock命令について勉強しているところ(サンプルで)なのですが、接続先のIPアドレスを127.0.0.1から、別の物に変えると
エラーが出ます。この127.0.0.1というものに何か意味があるのですか?
[5941] Re: 127.0.0.1 投稿者:sys 投稿日:06/07/20(木) 17:37
> いま、HSPsock命令について勉強しているところ(サンプルで)なのですが、接続先のIPアドレスを127.0.0.1から、別の物に変えると
> エラーが出ます。この127.0.0.1というものに何か意味があるのですか?
http://e-words.jp/w/E383ABE383BCE38397E38390E38383E382AFE382A2E38389E383ACE382B9.html
[5942] ありがとうございました。 投稿者:HSP半年の人 投稿日:06/07/20(木) 17:51
ありがとうございました!!!わかりました。
[5930] xnoteselもヘン? 投稿者:風の谷のウマシカ 投稿日:06/07/19(水) 18:30
複数のインプットボックスを並べ、ユーザーに必要事項を入力してもらおうとしています。
インプットボックス間で、ユーザーの入力内容に重複があったら、チェックして警告メッセージを出しすたるに、
xnoteselやxnoteaddを利用する積りですが、この2つが上手く動きません。使い方が間違っているのでしょうか?
ちなみに環境はWindows2000+HSP3.0aで、hspda.asはカレントディレクトリにコピー済み。
別のツリー「No.5883」で同じhspdaに含まれるcsvstrが上手く動かなくて、お騒がせしたのと同じ環境です。
直接関係あるところだけサンプルにします。こんな感じで使っています。
;;;;;;;;;;;;;;;;;;;;;サンプル;;;;;;;;;;;;;;;;;;;;
#include "hspda.as"
a="りんご"
b="みかん"
c="みかん"
d="いちご"
xnotesel FlootList
xnoteadd a
xnoteadd b
xnoteadd c
xnoteadd d
mes notemax
stop
;;;;;;;;;;;;;;;;;;;;;ここまで;;;;;;;;;;;;;;;;;;;;;
これで「3」と表示されたら成功ですよね。
書き方は合っていると思うんですが・・。noteselとnoteaddに変えたら「4」だったから・・。
でも上記のスクリブトを実行すると"xnoteadd a"のところでシステムエラーが出て先へ進みません。
デバッグウインドウを見ると、変数FlootListが「型:int」「内容:-243079038」になっています。何コレ?
[5931] Re: xnoteselもヘン? 投稿者:osakana 投稿日:06/07/19(水) 19:08
> xnoteselやxnoteaddを利用する積りですが、この2つが上手く動きません。
> ;;;;;;;;;;;;;;;;;;;;;サンプル;;;;;;;;;;;;;;;;;;;;
> #include "hspda.as"
>
> a="りんご"
> b="みかん"
> c="みかん"
> d="いちご"
>
> xnotesel FlootList
>
> xnoteadd a
> xnoteadd b
> xnoteadd c
> xnoteadd d
>
> mes notemax
> stop
//--------------------
#include "hspda.as"
a="りんご"
b="みかん"
c="みかん"
d="いちご"
FlootList=""
xnotesel FlootList,1000
xnoteadd a
xnoteadd b
xnoteadd c
xnoteadd d
notesel FlootList
mes notemax
noteunsel
stop
//--------------------
FlootList変数をあらかじめ文字列方にしたら動きました。
notemax は notesel 専用だと思ったので、
いったん notesel に指定してみました。
[5932] 動きました 投稿者:風の谷のウマシカ 投稿日:06/07/19(水) 19:35
本当だ。動きました。
>FlootList="" こ、こんな技がー!
この行を外しただけで動かなくなりますね。
>xnotesel FlootList,1000
の「1000」を外してもダメですね。「12文字しかないのに」とか
言ってたらダメなんでしょうね。
>notesel FlootList
これも仰る通りですね。
これが上級者の技か・・。
マニュアルだけ何度も読み返して「なんでintなんだよう!」と
泣き叫んでいましたが、それじゃダメなんですね。感動しました。
有難うございました。
[5935] Re: 動きました 投稿者:osakana 投稿日:06/07/19(水) 19:57
> >xnotesel FlootList,1000
> の「1000」を外してもダメですね。「12文字しかないのに」とか
> 言ってたらダメなんでしょうね。
あれ?
気分的に1000にしただけなので、この文字数なら外しても動きますよ。
あと全角文字は2バイトなので、正確には24文字分ありますです。
(NULLも数えるんだっけかな?)
[5936] Re^2: 動きました 投稿者:風の谷のウマシカ 投稿日:06/07/19(水) 20:03
今度は「1000バイト」を消しても動きました。
さっき、動かなかったのは操作ミス? もう再現できません。
でも謎の「int」が「FlootList=""」で解決するくらいですから、
本チャン用はいずれにしても多めに取っておいた方が良さそうですね。
2バイト文字の件は了解しました。有難うございました。
[5919] こんなことできますか? 投稿者:HSP半年の人 投稿日:06/07/17(月) 15:56
HSPのsock命令でオンラインゲームを作ることはできますか?
できるとしたら、どんなことから始めればよいですか。
できるだけ簡単にお願いします。
[5925] Re: こんなことできますか? 投稿者:Steep 投稿日:06/07/18(火) 20:19
> HSPのsock命令でオンラインゲームを作ることはできますか?
作れます。
> できるとしたら、どんなことから始めればよいですか。
> できるだけ簡単にお願いします。
hspsockの命令とはどういうものかを勉強することから始めて下さい。
[5928] Re^2: こんなことできますか? 投稿者:HSP半年の人 投稿日:06/07/19(水) 06:42
ありがとうございました。
[5923] 変数宣言 投稿者:tachi 投稿日:06/07/18(火) 19:57
HSPを勉強中です。
HSPには、VBのような「Option Explicit」の
ようなものはないのでしょうか?
プログラミングをしていてエラーになり何でエラーなのかが
見つけにくいです。
皆さんは、エラーにならないように何か工夫をされてますか?
[5924] Re: 変数宣言 投稿者:Steep 投稿日:06/07/18(火) 20:14
> HSPを勉強中です。
> HSPには、VBのような「Option Explicit」の
> ようなものはないのでしょうか?
> プログラミングをしていてエラーになり何でエラーなのかが
> 見つけにくいです。
ありません。スペルミスでも問答無用で変数として扱われます。
> 皆さんは、エラーにならないように何か工夫をされてますか?
私は工夫というようなことは特にしていません。
変数が怪しいなと思ったらデバッグウィンドウを表示させて確認しています。
[5902] 教えてください、、、 投稿者:cartman 投稿日:06/07/13(木) 15:54
初歩なんですが、、シューティングゲームで背景が流れるように表示し続けるにはどうしたらいいんでしょうか?背景スクロールの方法が分かりません。。
[5906] Re: 教えてください、、、 投稿者:RuthlessDragon 投稿日:06/07/13(木) 19:37 <URL>
> 初歩なんですが、、シューティングゲームで背景が流れるように表示し続けるにはどうしたらいいんでしょうか?背景スクロールの方法が分かりません。。
流れる背景、というと星でしょうか?
星ですと、配列変数に数値(RGBカラー、X,Y座標あたり)を入れてあげて
一ループごとにY座標の数値をマイナスさせてやって(左に移動させる)psetを用いて描画させる手段が妥当でしょう。
たかのんさんの【遊々窓々】が参考になると思います。
http://homepage1.nifty.com/takanon/index2nd.html
[5904] 背景スクロール(Re: 教えてください、、、 投稿者:GENKI 投稿日:06/07/13(木) 19:30
> 初歩なんですが、、シューティングゲームで背景が流れるように表示し続けるにはどうしたらいいんでしょうか?背景スクロールの方法が分かりません。。
とりあえず情報だけですが、どうぞ。
http://hspwiki.nm.land.to/?cmd=read&page=%BE%AE%A5%EF%A5%B6%2F%A5%DE%A5%C3%A5%D7%A5%B9%A5%AF%A5%ED%A1%BC%A5%EB%2F%B2%A3
[5914] (Re: 教えてください、、、 投稿者:cartman 投稿日:06/07/16(日) 17:43
> > 初歩なんですが、、シューティングゲームで背景が流れるように表示し続けるにはどうしたらいいんでしょうか?背景スクロールの方法が分かりません。。
>
返信遅れてすみません。色々な方々ご回答ありがとうございます。
画像背景(例えばウィンドウサイズ320*240)を画面に途切れず流れるように表示したいのです。。。
[5915] Re: (Re: 教えてください、、、 投稿者:K 投稿日:06/07/16(日) 19:10
ロールさせたいって事かな?
じゃぁ、画面外に出る部分を反対側にコピーするだけじゃない?
;画像が320*240でID1に基の画像があるとして、縦スクロール
scr=0 ;スクロールカウンタ
sizx=320 ;基画像のサイズ
sizy=240 ;ウィンドウのサイズでは無い
;ここからメイン
scry=scr\sizy
pos 0,scry
gcopy 1,0,0,sizx,sizy
if scry>0 {pos 0,0 :gcopy 1,0,sizy-scry,sizx,scry}
scr++
これが使えるのは、基画像のサイズがウィンドウサイズ以上の場合
(それ未満だと3回コピーが必要になる場合が出てくるため)
[5918] Re^2: (Re: 教えてください、、、 投稿者:cartman 投稿日:06/07/17(月) 06:07
> ロールさせたいって事かな?
> じゃぁ、画面外に出る部分を反対側にコピーするだけじゃない?
> ;画像が320*240でID1に基の画像があるとして、縦スクロール
>
> scr=0 ;スクロールカウンタ
> sizx=320 ;基画像のサイズ
> sizy=240 ;ウィンドウのサイズでは無い
>
> ;ここからメイン
> scry=scr\sizy
> pos 0,scry
> gcopy 1,0,0,sizx,sizy
> if scry>0 {pos 0,0 :gcopy 1,0,sizy-scry,sizx,scry}
> scr++
>
> これが使えるのは、基画像のサイズがウィンドウサイズ以上の場合
> (それ未満だと3回コピーが必要になる場合が出てくるため)
分かりました!大変参考になりました。
ありがとうございます^^
[5903] Re: 教えてください、、、 投稿者:かきしす 投稿日:06/07/13(木) 16:47
> 初歩なんですが、、シューティングゲームで背景が流れるように表示し続けるにはどうしたらいいんでしょうか?背景スクロールの方法が分かりません。。
『1〜3画面程度の背景を繰り返し流す』のと、
『スタート地点から最終地点までデザインされた背景を流す』
のでは、作り方が違ってきます。
前者は楽チンですが、同じ背景の繰り返しなので単調になります。
後者は大変ですが、表現力が豊かになります。
(メモリを馬鹿食いしてもよければ、楽チンな方法でも作れますが)
どちらがお好みでしょう?
[5907] 指定した数値まで1から順にかける... &次数 投稿者:紅蓮 投稿日:06/07/14(金) 15:15
入力ボックスなどで数値を指定した後、その数値まで1から順にかける、と言う処理を一度に行う関数か命令はありませんか?
例:
5 と入力した場合
1×2×3×4×5
のような感じです。
また、次数はどのようにすればいいですか?
2乗なら a*a
で現せれますが、これが10乗、50乗となると少々面倒です。
(まぁそこまでバッファがもつか分かりませんが)
[5908] Re: 指定した数値まで1から順にかける... &次数 投稿者:Irisawa 投稿日:06/07/14(金) 18:08
> 入力ボックスなどで数値を指定した後、その数値まで1から順にかける、と言う処理を一度に行う関数か命令はありませんか?
> 例:
> 5 と入力した場合
> 1×2×3×4×5
> のような感じです。
>
> また、次数はどのようにすればいいですか?
> 2乗なら a*a
> で現せれますが、これが10乗、50乗となると少々面倒です。
> (まぁそこまでバッファがもつか分かりませんが)
こんな感じでどうでしょうか。
動作は保証しません。
誤動作を起こしてもご了承ください。
#include "hspmath.as"
#uselib "user32.dll"
#cfunc GetWindowLong "GetWindowLongA" int, int
#func SetWindowLong "SetWindowLongA" int, int, int
#const GWL_STYLE -16
#const ES_NUMBER 0x2000
dim num
input num
id = stat
style = GetWindowLong(objinfo(id, 2), GWL_STYLE) | ES_NUMBER
SetWindowLong objinfo(id, 2), GWL_STYLE, style
button "階乗", *factorial
button "べき乗", *power
stop
*factorial
sum = 1
if num {
repeat num
sum *= (cnt + 1)
loop
dialog str(sum), , "階乗結果"
}
stop
*power
sum = 3
if num {
dialog str(int(pow(num, num))), , "べき乗結果"
}
stop
[5820] シューティングゲーム 投稿者:初心者 投稿日:06/06/28(水) 13:17
キー設定でZやXでショット等打つにはどうすればよいでしょう?
[5823] Re: シューティングゲーム 投稿者:理沙 投稿日:06/06/28(水) 16:32
> キー設定でZやXでショット等打つにはどうすればよいでしょう?
キーボードで操作するってことですかぁ?
stick とか getkey をマニュアルで調べてみてください。
あとサンプルは、同梱されてるサンプルスクリプトの
GAMEってとこにたくさん入ってますよ。
でも質問内容違ってたらゴメンなさいっ!
[5889] Re^2: シューティングゲーム 投稿者:初心者 投稿日:06/07/12(水) 13:19
遅くなりましたが、指導ありがとうございます
自分である程度調べてみて自分なりの理解の仕方でがんばっていきます。
[5876] 置換・検索などで新しいウィンドウ&パスワードっぽい… 投稿者:紅蓮 投稿日:06/07/10(月) 19:41
メモ帳などの「置換」「検索」機能などの時に新しいちっちゃいウィンドウが出ますよね?
そのウィンドウを表示して文字列を入力した後、それを置換や検索などに使いたいのです。
また、パスワード入力の際に入力するボックスが「*」などになって物理的には見えなくなるように文字列を入力するにはどうすればいいですか?
[5887] Re: 置換・検索などで新しいウィンドウ&パスワードっぽい… 投稿者:Irisawa 投稿日:06/07/12(水) 00:17
> メモ帳などの「置換」「検索」機能などの時に新しいちっちゃい
> ウィンドウが出ますよね?
> そのウィンドウを表示して文字列を入力した後、それを置換や検索
> などに使いたいのです。
検索ダイアログと置換ダイアログはコモンダイアログの一種です。
表示自体は以下のような感じでできますが、機能させるのは少し面倒
です。
いろいろ、試行錯誤してみてください。
#module
#uselib "comdlg32.dll"
#cfunc ReplaceTextA "ReplaceTextA" var
#cfunc FindTextA "FindTextA" var
#const global FR_DOWN 0x01
#const global FR_WHOLEWORD 0x02
#const global FR_MATCHCASE 0x04
#const global FR_FINDNEXT 0x08
#const global FR_REPLACE 0x10
#const global FR_REPLACEALL 0x20
#const global FR_DIALOGTERM 0x40
#const FR_HIDEUPDOWN 0x4000
#const FR_HIDEMATCHCASE 0x8000
#const FR_HIDEWHOLEWORD 0x10000
#deffunc ReplaceDialog var buf, var rep, var msg, local fr
fr = 40, hwnd, hinstance, $1C000, varptr(buf), varptr(rep), 0x00ff00ff, 0, 0, 0 ;255文字まで
dup msg, fr(3)
return ReplaceTextA(fr)
#defcfunc FindDialog var buf, var msg, local fr
dim fr, 10
fr = 40, hwnd, hinstance, FR_HIDEWHOLEWORD, varptr(buf), 0, 0xff, 0, 0, 0
dup msg, fr(3)
return FindTextA(fr)
#global
#uselib "user32.dll"
#cfunc RegisterWindowMessage "RegisterWindowMessageA" sptr
#cfunc FindWindow "FindWindowA" int, sptr
oncmd gosub *msg_FindReplace, RegisterWindowMessage("commdlg_FindReplace")
sdim findtxt
sdim repFind
button gosub "検索", *FindText
button gosub "置換", *Replace
stop
*FindText
if FindWindow(0, "検索") {
return
}
findhwnd = FindDialog(findtxt, msg) ; "検索する文字" , Windowメッセージmsg
return
*Replace
if FindWindow(0, "置換") {
return
}
ReplaceDialog repFind, repRep, msg ;"検索する文字" , "置換する文字" , Windowメッセージ
return
*msg_FindReplace
if msg & FR_DOWN {
mes "下へモードです"
}
if msg & FR_MATCHCASE {
mes "区別するモードです"
}
if msg & FR_FINDNEXT {
mes "次を検索"
}
if msg & FR_REPLACE {
mes "置換して次に"
}
if msg & FR_REPLACEALL {
mes "すべて置換"
}
if msg & FR_DIALOGTERM {
mes "キャンセル"
}
return 0
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/sdk/sdk_76.htm
HSP3ラウンジ
http://smile.poosan.net/perl-bin/hsp/ver3/hsp3.cgi?print+200509/05090024.txt
[5888] Re^2: 置換・検索などで新しいウィンドウ&パスワードっぽい… 投稿者:Irisawa 投稿日:06/07/12(水) 00:22
> 表示自体は以下のような感じでできますが、機能させるのは少し面倒
> です。
上記サンプルはほぼ、HSP3ラウンジの丸写しなのでご注意下さい。
(微妙に変更していますが...)
実際には、アクセラレータの処理なども自前でやった方がより近い
動作をすることが可能ですが、いろいろ面倒です。
HSP開発wiki
http://hspwiki.nm.land.to/?%A5%A2%A5%AF%A5%BB%A5%E9%A5%EC%A1%BC%A5%BF
[5879] Re: 置換・検索などで新しいウィンドウ&パスワードっぽい… 投稿者:DoubleQuote 投稿日:06/07/11(火) 08:55
> また、パスワード入力の際に入力するボックスが「*」などになって物理的には見えなくなるように文字列を入力するにはどうすればいいですか?
パスワード入力は以下のようにsendmsgを使ってやると実行できます
sdim pass
input pass
inputboxid = stat
sendmsg objinfo(inputboxid,2), $cc, '*', z
[5874] 同時押し 投稿者:Sige 投稿日:06/07/10(月) 17:20
はじめまして
HSP ver3.1β4 を使っているのですが、キー入力判定について分か
らない現象が起きてしまい困っております。
内容は、
カーソル上、カーソル左、を押しっぱなしの場合に、スペースキー
が押されたことが何故か判定できません。
例えば、
*main
stick ky,127
wait 1
cls : pos 0,0 : mes "stick="+ky
goto *main
このようなスクリプトで上+左+スペースの同時押しで、結果が「1
9」になってくれないのですが、これは上のスクリプトが何か間違っ
ているのでしょうか?
同じような現象にあっている方っていませんか?
[5875] Re: 同時押し 投稿者:RuthlessDragon 投稿日:06/07/10(月) 19:26 <URL>
> はじめまして
> HSP ver3.1β4 を使っているのですが、キー入力判定について分か
> らない現象が起きてしまい困っております。
> 内容は、
> カーソル上、カーソル左、を押しっぱなしの場合に、スペースキー
> が押されたことが何故か判定できません。
スクリプトは間違っていないと思います。
キーボードの仕様上、どうしてもいくつかのキーの同時押しは無効になってしまうことがあります。
キーボードの質にもよるそうですが・・・。
実際、過去に俺もシューティングゲームを作成中に上+左+スペースが動かないという事態を経験していますので、
それから考えるとオプションでボタンを変更できるようにする、というような措置を取るといいでしょう。
[5878] Re^2: 同時押し 投稿者:Sige 投稿日:06/07/11(火) 00:28
> > はじめまして
> > HSP ver3.1β4 を使っているのですが、キー入力判定について分か
> > らない現象が起きてしまい困っております。
> > 内容は、
> > カーソル上、カーソル左、を押しっぱなしの場合に、スペースキー
> > が押されたことが何故か判定できません。
>
> スクリプトは間違っていないと思います。
> キーボードの仕様上、どうしてもいくつかのキーの同時押しは無効になってしまうことがあります。
> キーボードの質にもよるそうですが・・・。
> 実際、過去に俺もシューティングゲームを作成中に上+左+スペースが動かないという事態を経験していますので、
> それから考えるとオプションでボタンを変更できるようにする、というような措置を取るといいでしょう。
ご回答ありがとうございます!
おっしゃるとおりでした。
書き込みを見て早速、知人のPCで試させてもらったところ正常動作しました。
今回はボタン配置を換えることで対処しましたが、今度からは使うボタンはあらかじめ動作チェックしてからプログラムを作り込むようにしようと思います。
的確なアドバイスのおかげで謎が早期解決しました!
どうもありがとうございました!
[5759] テキストファイルから文字列を検索するには? 投稿者:REX 投稿日:06/06/21(水) 21:03
テキストファイルから、一定の文字列を取り出すように作りたいのですが本を読んでも詳しく書いておらず困っております。
プログラム内容は下記のとおりです。
テキストファイル名 pro.txt
テキスト内容 001 停止 電源切断 電源が切断されたため停止しました。(スペースの間はタブで区切ってあります)
検索語句「001」か「停止」
検索結果 上記テキストファイルの内容を表示
表示方法:番号001
停止
電源切断
電源が切断されたため停止しました。
上記のように入出力したいのですが、どのように組めばよいのか判りません。また、テキストファイルは中身が多いので検索する時間も考慮したいと考えています。
プログラムの1割も出来ておりませんが、何方かアドバイス頂けないでしょうか?
font "MS 明朝"
color 255,255,255
print "番号又は検索語句を入力してください"
tmp1="" //検索文字列
input tmp1,100,24
button "検索",*go1
stop
*go1
notesel m01
noteload "pro.txt"
instr m01,0,tmp1
[5764] [回答]Re: テキストファイルから文字列を検索するには? 投稿者:GENKI 投稿日:06/06/22(木) 00:02
> テキストファイルから、一定の文字列を取り出すように作りたいのですが本を読んでも詳しく書いておらず困っております。
> プログラム内容は下記のとおりです。
> テキストファイルから、一定の文字列を取り出すように作りたいのですが
> 本を読んでも詳しく書いておらず困っております。
本でダメならネットで検索も手です。
答えそのものが手に入らなくてもヒントや糸口、運がよければ答えの一部が入手できます。
分からないなら複数のことを同時にやろうとせずに、ひとつずつ解決していくといいですよ。
・ファイルの読み込み
・文字列の検索
と解決してからつぎに進むほうが近道になります。
instrは関数なので使い方が違います。
p3 = instr(p1,p2,"string") みたいな感じです。
ヘルプブラウザも関数と命令がもう少しはっきり区別できるといいような気がするのですが…。よく見ないと分からないです。
ファイルの読み込み方は…ってどこに載ってたんでしたっけ。(^_^;)
ぷまさんのヘルプならばっちりサンプルまで載ってるんですが。
だいたいこんな感じでなりそうな気がします。
そのままじゃだめな気がするので、雰囲気だけ読んでください。
ちゃんと動くものを提示したいところですが…。
;---------------------------------
tmp1 = "停止";検索キーワード
sdim data
;ファイル読み込み
exist "pro.txt"
sdim buf, strsize+1;領域確保
bload fn,buf;ファイル読み込み
notesel buf;メモリノートパッド命令を使うときの対象を指定
lnmax = noteinfo(0);bufの行数取得
;検索開始
repeat lnmax;全行検索
noteget data, cnt;data=bufのcnt行目
ln0 = instr( data, 0,"\t" )
ln1 = instr( data, 0, tmp1 )
if ln1>ln0 : ln1 = -1;見つかっても1個目以外の場所なら見つかってないことにする
ln0 = instr( data, ln0+1,"\t" )
ln2 = instr( data, ln0, tmp1 )
if ln2>ln0 : ln2 = -1;見つかっても2個目以外の場所なら見つかってないことにする
if (ln1!-1)|(ln2!-1) : break;見つかったらループ脱出
loop
;発見後の処理
if (ln1!-1)|(ln2!-1) {
;タブ(\t)位置で検索開始位置を変えながら適当に読んでいく。
;結果をmesとかで出力する
;…という感じで適当に組んでください。
} else {
mes "見つかりませんでした。"
}
;---------------------------------
(汎用性に欠けるなあ…。)
データをカンマ区切りにしてhspdaプラグインを使うのはどうでしょう。
これが一番楽な気がします。
[5765] Re: [回答]Re: テキストファイルから文字列を検索するには? 投稿者:GENKI 投稿日:06/06/22(木) 00:05
> > テキストファイルから、一定の文字列を取り出すように作りたいのですが本を読んでも詳しく書いておらず困っております。
> > プログラム内容は下記のとおりです。
>
>
> > テキストファイルから、一定の文字列を取り出すように作りたいのですが
> > 本を読んでも詳しく書いておらず困っております。
>
> 本でダメならネットで検索も手です。
> ...
_| ̄|○
見にくいスクリプトごめんなさい。
そのままだとタブ消えちゃうの忘れてた…。(久しぶりだったから)
見やすいように適当に行頭にタブ入れてください。
[5770] Re^2: [回答]Re: テキストファイルから文字列を検索するには? 投稿者:REX 投稿日:06/06/22(木) 22:38
GENKI様
お世話になります。
早速のアドバイスありがとうございます。
アドバイスというよりも、私にとっては答えに見えます。
プログラムまで作って頂いてありがとうございます。
テキストファイルをカンマ区切りにする方法ですか・・・。
思いつきもしませんでした、といいますかカンマ区切りにしても自分が判るわけではありませんが・・・・。
カンマ区切りにすると上記のプログラムよりも比較的楽に組めるのでしょうか?
仕事の都合で休み時間の間にネットで調べる程度でしたので、深くまで調べることはできていませんが、参考プログラムでも見つかればいいのですが・・・。
[5777] Re^3: [回答]Re: テキストファイルから文字列を検索するには? 投稿者:GENKI 投稿日:06/06/23(金) 22:35
> 早速のアドバイスありがとうございます。
> アドバイスというよりも、私にとっては答えに見えます。
> プログラムまで作って頂いてありがとうございます。
いえいえ、それは気のせいです。(^ ^;
> カンマ区切りにすると上記のプログラムよりも比較的楽に組めるのでしょうか?
> 仕事の都合で休み時間の間にネットで調べる程度でしたので、深くまで調べることはできていませんが、参考プログラムでも見つかればいいのですが・・・。
カンマ区切りのデータ書式にすると、それはCSVと呼ばれるファイルの書式と同じになります。
あとはファイルの拡張子を.csvに書き換えてやれば立派なcsvファイルの出来上がりです。
Excelなど表計算ソフトで開くとカンマの部分で区切られて綺麗に読んでくれます。
CSVについてのもっと詳しいこと(わかりやすい解説)はyahooかgoogleあたりで探してください。
csv形式にすると多少都合がよくなることがあります。
データ作成がExcelで出来たり(データが作りやすい)、HSPでの読み込みがプラグイン任せに出来て楽だとか。
まあ反面多少の注意も必要ですが…。
CSV形式のデータの読み込みは、HSP3付属のhspdaプラグインを使うと便利です。
詳細はマニュアル「(拡張プラグイン)HSPDA.DLL リファレンスマニュアル (hspda.txt) 」と
ヘルプブラウザを見てください。
サンプルはインストールフォルダ内の \hsp30\sample\hspda にあります。
他にいいサンプルないかちょっと探してみたけど見当たらなかった…。
探し方がまずかったのか利用者少ないのか。
私もこのプラグインあんまり深く使ったことはないのであんまり助言できません。(使う機会がないため。)
[5871] HSPDA.DLLwo 投稿者:REX 投稿日:06/07/09(日) 20:27
> > 早速のアドバイスありがとうございます。
> > アドバイスというよりも、私にとっては答えに見えます。
> > プログラムまで作って頂いてありがとうございます。
>
> いえいえ、それは気のせいです。(^ ^;
>
>
> > カンマ区切りにすると上記のプログラムよりも比較的楽に組めるのでしょうか?
> > 仕事の都合で休み時間の間にネットで調べる程度でしたので、深くまで調べることはできていませんが、参考プログラムでも見つかればいいのですが・・・。
>
>
> カンマ区切りのデータ書式にすると、それはCSVと呼ばれるファイルの書式と同じになります。
> あとはファイルの拡張子を.csvに書き換えてやれば立派なcsvファイルの出来上がりです。
> Excelなど表計算ソフトで開くとカンマの部分で区切られて綺麗に読んでくれます。
> CSVについてのもっと詳しいこと(わかりやすい解説)はyahooかgoogleあたりで探してください。
>
> csv形式にすると多少都合がよくなることがあります。
> データ作成がExcelで出来たり(データが作りやすい)、HSPでの読み込みがプラグイン任せに出来て楽だとか。
> まあ反面多少の注意も必要ですが…。
>
> CSV形式のデータの読み込みは、HSP3付属のhspdaプラグインを使うと便利です。
> 詳細はマニュアル「(拡張プラグイン)HSPDA.DLL リファレンスマニュアル (hspda.txt) 」と
> ヘルプブラウザを見てください。
> サンプルはインストールフォルダ内の \hsp30\sample\hspda にあります。
> 他にいいサンプルないかちょっと探してみたけど見当たらなかった…。
> 探し方がまずかったのか利用者少ないのか。
> 私もこのプラグインあんまり深く使ったことはないのであんまり助言できません。(使う機会がないため。)
[5872] HSPDA.DLLを用いてCSVファイル読み込みを行うには? 投稿者:REX 投稿日:06/07/09(日) 20:30
お世話になります。
上の書き込みはミスです。
GENKI様指導の下HSPDA.DLLを使えば、比較的簡単にCSV形式のファイルから文字列を検索出来ることを教わりました。
CSV形式のファイルを読み込むことは出来そうですが、検索プログラムの作り方が判りません。
どのように組めばよいのでしょう?
何処かに似たようなサンプルプログラムでもあればよいのですが・・・。
[5873] [回答]Re: HSPDA.DLLを用いてCSVファイル読み込みを行うには? 投稿者:GENKI 投稿日:06/07/10(月) 00:34
書き込む前に削除キー入れておけば書き込みは消せますよ。消した痕跡は残りますが。
> CSV形式のファイルを読み込むことは出来そうですが、検索プログラムの作り方が判りません。
hspda使えばcsvのデータが比較的簡単に配列変数に代入できるようになります。
配列変数に入れてしまえればあとはだいたい分かるんじゃないかと思います。
とりあえずhspdaのサンプル書いてみました。
;---------------------
#include "hspda.as"
sdim buf, 32000
sdim data, 256
sdim cell,256,4
;テキスト内容
buf = "001,停止,電源切断,電源が切断されたため停止しました。"
buf += "\n002,テスト2,てすと2,テスト文2"
buf += "\n003,テスト3,てすと3,テスト文3"
buf += "\n004,テスト4,てすと4,テスト文4"
buf += "\n005,テスト5,てすと5,テスト文5"
buf += "\n006,テスト6,てすと6,テスト文6"
notesel buf
lnmax = noteinfo(0) ;bufの行数取得
src = "停止" ;検索語句
;検索開始
repeat lnmax
noteget data, cnt ;data=bufのcnt行目
csvstr cell, data
if (cell.0 = src)or(cell.1 = src) {
i = cnt + 1
mes "データは、"+i+" 行目に見つかりました。"
mes "" + cell.0 + "\n" + cell.1 + "\n" + cell.2 + "\n" + cell.3
}
loop
mes "\n\n検索終了"
stop
;---------------------
あとはマニュアルおよびHSP付属サンプルとにらめっこです。
[5877] Re: [回答]Re: HSPDA.DLLを用いてCSVファイル読み込みを行うには? 投稿者:REX 投稿日:06/07/10(月) 23:33
GENKI様
いつもありがとう御座います。
> 書き込む前に削除キー入れておけば書き込みは消せますよ。消した痕跡は残りますが。
自分のミスでエンターキーを二回も押してしまいました・・・。(削除キーを入れる前に押してしまいました)
参考プログラム有難う御座います。
仕事の都合上夜中しか勉強出来ないのでいつも睡魔と闘っております。
CSVファイルの中身が膨大な量なので少し心配ですが、GENKI様に作って頂いたプログラムとにらめっこしたいと思います。
本当に度々すみません。
[5866] (削除) 投稿者:(削除) 投稿日:06/07/08(土) 08:09
(削除されました)
[5867] Re: ウィンドウID 投稿者:Shark++ 投稿日:06/07/08(土) 13:31
> ウィンドウIDは、パソコンのどこから見れるのでしょうか?
最初のウインドウのウインドウIDが0です。
> そして、画像をウィンドウIDに入れるのはどうすれば
> いいのでしょうか?
picload で画像を読み込む事が出来ます。
パラメータなどはヘルプで調べてください
> そこが不具合が出て先に進めません。
不具合といわれても私はエスパーではないので症状がわかりません。
どんな症状が出てしまうのか出来れば症状が再現できる該当部分を抜き出した簡単なソースを書き込んでください。
[5868] ありがとうございます。 投稿者:hama 投稿日:06/07/08(土) 18:27
丁寧に教えていただき、ありがとうございました。
画像表示は解決いたしました。
新たな問題が出てきたのですが、
palcopy 1と入力したものが、文法エラーになるみたいです。
教えていただけないでしょうか?
[5869] Re: ありがとうございます。 投稿者:kz3 投稿日:06/07/08(土) 23:28 <URL>
> 教えていただけないでしょうか?
削除した最初の質問を元に戻せば教えてもらえると思いますよ。
[5870] Re^2: ありがとうございます。 投稿者:GENKI 投稿日:06/07/09(日) 03:33
> 新たな問題が出てきたのですが、
> palcopy 1と入力したものが、文法エラーになるみたいです。
内容が変わるならレスじゃなくて新規で書き込んだほうがいいですよ。
解決したスレッドだと思われてしまうこともあるので。ツリー表示では
見分けがつかなくなってしまいます。
というかとりあえずf1キーを押してみてはどうでしょうか?(…戻してからのほうがよかったかな?)
> > 教えていただけないでしょうか?
>
> 削除した最初の質問を元に戻せば教えてもらえると思いますよ。
恥ずかしくても間違ってても、誹謗中傷迷惑行為など問題の
ある書き込みでなければ残しておいてもらえると助かります。
質問は、後々に同じ疑問を抱えた人の助けになりますから。
また修正したい場合は削除後レスの形で書いてもらえればいいと
思います。ここの掲示板は修正できないタイプなので。
[5863] ゲームの文のところ 投稿者:iwan 投稿日:06/07/04(火) 12:40
ゲームの会話部部のスクリプト、教えてください。
[5864] ゲームの会話部分 投稿者:ENS 投稿日:06/07/04(火) 17:50
> ゲームの会話部分のスクリプト、教えてください。
そんなことだけ言われても、わかりません。
なぜなら、人によって内容が全く違うからです。
作りかけているのなら、そのスクリプトを書いて、
具体的にどういうことをしたいのかを教えてください。
[5865] Re: ゲームの会話部分 投稿者:GENKI 投稿日:06/07/04(火) 22:10
> > ゲームの会話部分のスクリプト、教えてください。
>
> そんなことだけ言われても、わかりません。
> なぜなら、人によって内容が全く違うからです。
> 作りかけているのなら、そのスクリプトを書いて、
> 具体的にどういうことをしたいのかを教えてください。
ゲームで会話といったらアドベンチャーか、RPG、あとはイベント発生時に会話が…という感じでしょうか。
会話主体の人工無能っていうものもありますが…これはゲームとはいえなか。
ついでに言えば質問にYES/NOで答えていくだけのものでも会話型と言えなくもない…。
まあ、いろいろありますが、とりあえずどのジャンルでしょうか?どんな感じのものを作りたいのか、その辺をお願いします。
それと、今現在どこまで作っているんでしょうか?どういう状況?
まったくのお手上げ状態ですか?
ここまで作ってみた、とか、こんなふうに考えてるけどどうやって実現したものやら?とか書いてくれると助かります。
ちょっと質問が漠然としていてよく分からないです。
-----
なんだかENSさんと同じような内容になってしまいました…。
[5811] テキストを暗号化するとき・・・ 投稿者:紅蓮 投稿日:06/06/27(火) 17:39
len=strlen (box)
key16="yナ5+gケ?ハ2K|'$"
repeat len
key=peek(key16,cnt\16)
src=peek(box,cnt)
dst=src^key
key=key+57&255
poke key16,cnt\16,key
poke box,cnt,dst
await
loop
return
上記、暗号化の過程ですがこれで暗号化をするとループが終わった時点で2940byteのテキストが550byteになってしまいます。
どこを改善すればいいですか?
解説:
box=テキストボックスで入力した文字が入っている変数
また、変数lenにはちゃんと2940の数値が入っていたと思います。
くりかえしもテストしてみたところ2940回あったはずです。
このスクリプトの最初にはsdim命令でバッファを約1MB確保しておきました。
[5860] Re: テキストを暗号化するとき・・・ 投稿者:hiro 投稿日:06/07/02(日) 09:38 <URL>
両方が同じ場合はXORをしないようにするといいと思います。
(今回の場合、srcとkeyです)
以下を実行してみると
// ^ のテスト
dim a
dim b
dim c
a = 10
b = 10
c = a ^ b
dialog "" + c
stop
// テスト終了
とした時、「c」は0になります
ですが、if a=b : c = a
とすれば回避できるようになると思います
#暗号化の簡単なテストを上記URLにてしています
もしよかったら見て下さい
[5861] Re^2: テキストを暗号化するとき・・・ 投稿者:紅蓮 投稿日:06/07/02(日) 13:34
解決しました。ありがとうございます。
排他的論理輪で同じ数値を計算したときは文字コードは0=終了コードとなってしまいそれ以降は入らない、と言うことを忘れていました。
ご迷惑をお掛けしました。
[5862] [解決]Re^3: テキストを暗号化するとき・・・ 投稿者:kz3 投稿日:06/07/02(日) 13:54 <URL>
> 排他的論理輪で同じ数値を計算したときは文字コードは0=終了コードとなってしまいそれ以降は入らない、
それ以降は「文字列」のうちに入らないってことですね。
そういうことです。
解決してよかったですね。
[5812] Re: テキストを暗号化するとき・・・ 投稿者:kz3 投稿日:06/06/27(火) 22:29 <URL>
> 2940byteのテキストが550byteになってしまいます。
「文字列」は$00で終了します。
[5821] Re^2: テキストを暗号化するとき・・・ 投稿者:紅蓮 投稿日:06/06/28(水) 13:26
では文字列をこのような方法で暗号化する際、どう工夫すれば全部を暗号化することができますか?
[5826] Re^3: テキストを暗号化するとき・・・ 投稿者:kz3 投稿日:06/06/28(水) 20:55 <URL>
> では文字列をこのような方法で暗号化する際、どう工夫すれば全部を暗号化することができますか?
>> 2940byteのテキストが550byteになってしまいます
正しくは、2940byteの"テキスト"が550byteの"テキスト"になってしまったが、
2940byteの"データ"は2940byteの"データ"のままのハズです。( 圧縮ではないのだから )
dat0 = "hsp3.0hsp3.1"
dat1 = dat0
repeat strlen(dat1)
poke dat1, cnt, peek(dat1,cnt)-'0'
loop
mes dat0+"(len = "+strlen(dat0)+" )"
mes dat1+"(len = "+strlen(dat1)+" )"
これも紅蓮さんの症状と同じです。
でもデバッグウィンドウのメモリダンプを比較してください。
果たして暗号化が途中で終わっているでしょうか?
文字列についてはhsp3をインストールしたディレクトリ下位のdocs/hsp3str.htm を読んで、
「文字列」の理解を深めるといいと思います。( これだけで分かるかな? )
[5857] HSP.EXEをCから使うには 投稿者:悠麒夜 投稿日:06/07/01(土) 13:29
はじめまして。悠麒夜と申します。
検索に同様の記事がみつからなかったので質問させていただきます。
今回、C言語の勉強をかねてSTGを作ろうと思ったのですが、どうしても上手く文字表示ができず、以前HSPで作りました「スクリプトを読み込んで画面で表示する」というものを使いたいのです。
イメージとしてはSTGの面クリアなどでキャラクタの台詞などを入れるということをしたいのですが、今の時点で、日本語も数字も入れることができません。(勉強不足ということは承知してます)
それでHSPで以前作りましたこともあって、HSPでexeを作ってC側でDLLのようにして呼び出したいのですが、
@可能かどうか。
A可能ならどのように書けばよいか(リンカの設定なども教えていただければ幸いです)
の2つを教えていただけないでしょうか。
お忙しいところ恐縮ですがよろしくお願いします。
[5858] Re: HSP.EXEをCから使うには 投稿者:Steep 投稿日:06/07/01(土) 17:56
HSPでは関数をエクスポートできないので不可能。
[5859] Re^2: HSP.EXEをCから使うには 投稿者:悠麒夜 投稿日:06/07/01(土) 22:26
そうですか。ありがとうございました。
Cで真面目に作ります。
[5836] ツールボックスについて 投稿者:@神無月 投稿日:06/06/29(木) 20:33
メインの画面から、screen命令でツールボックス風ウインドウを呼び出すようにしているんですが
そのツールボックスの×マークをクリックして閉じようとすると
メインのウインドウも一緒に閉じてしまうんです。
どうにかならないでしょうか?
[5837] Re: ツールボックスについて 投稿者:理沙 投稿日:06/06/29(木) 21:24
> メインの画面から、screen命令でツールボックス風ウインドウを呼び出すようにしているんですが
> そのツールボックスの×マークをクリックして閉じようとすると
> メインのウインドウも一緒に閉じてしまうんです。
> どうにかならないでしょうか?
なんか昔どっかで聞いた気がします・・・(^^;
これですかぁ?
[Q]
>>本体ウィンドウがID0でサブウィンドウがID1とします
>>サブウィンドウID1だけを閉じたいのですが
>>ふつうにend命令を使うとID0とID1が一緒に閉じてしまいます
>>どうしたらサブウィンドウID1だけを閉じることができるのでしょうか
[A]
>>onexitとginfo_actを使えば複数ウィンドウに対応
>>
>>onexit gosub *ending
>>mes "メインです"
>>screen 1
>>mes "サブ1です"
>>screen 2
>>mes "サブ2です"
>>stop
>>
>>*ending
>>if ginfo_act=0 : end
>>buffer ginfo_act
>>return
>>
>>これではメインウィンドウの「閉じる」ボタンを押したときに終了
>>サブだった場合はbufferで隠す、というものです
>>bufferはgselのほうがいいかも
[A]
>>HSPではHSPのウィンドウ自体を一つだけ閉じることはできません。
>>(DestroyWindowを使用するとHSPが終了してしまう)
>>
>>WM_CLOSEとWM_DESTROYメッセージをハックしてDestroyWindowを有効にすることは可能
>>ですが、この場合、一度閉じたウィンドウIDのウィンドウを再度作成はできなくなって
>>しまいます。
>>
>>つまり、定石は上の方たちの仰るようにウィンドウを非表示にして必要になったら
>>再表示/再初期化するという方法になってしまいます。
>>
>># (BMSCR構造体のメンバを書き換えるなどで)無理矢理可能にできないのかな。
[5847] Re^2: ツールボックスについて 投稿者:@神無月 投稿日:06/06/30(金) 22:09
ご指導ありがとうございます!
gsel命令を使うことでどうにかなりそうです。。。
そこで、もうひとつ聞きたいのですが・・・
そのツールボックスの上部にある×マークは消せないでしょうか?
無理ならこちらは諦めますが・・・
どうにかならんでしょうか?
[5848] Re^3: ツールボックスについて 投稿者:理沙 投稿日:06/06/30(金) 22:37
> そこで、もうひとつ聞きたいのですが・・・
> そのツールボックスの上部にある×マークは消せないでしょうか?
う〜(-o-;
さくらさんが書き込んでくれたコードですが・・。
//
//screen ID=2以降で実行します。
#uselib "user32.dll"
#func SetWindowLong "SetWindowLongA" int,int,int
#cfunc GetWindowLong "GetWindowLongA" int,int
#define WS_SYSMENU $00080000
#define GWL_STYLE -16
gsel 0,-1
screen 2,640,480,8
ws = GetWindowLong(hwnd,GWL_STYLE)
SetWindowLong hwnd,GWL_STYLE,ws-WS_SYSMENU
gsel 2,-1
gsel 2,1
button "owari",*owari
stop
*owari
end
//
> 無理ならこちらは諦めますが・・・
> どうにかならんでしょうか?
その前に一応調べてみてください。
確かに聞くのは早くて簡単ですけど・・(^^;
それからの方がいいと思います。
ワード検索で「×」で調べたらでてくる筈ですっ(^^/
[5856] Re^4: ツールボックスについて 投稿者:@神無月 投稿日:06/07/01(土) 12:58
ご返答ありがとうございます!
ワード検索でも出てきました。。。
スクリプトまで提示してもらってありがとうございます!
[5832] FTPにて 投稿者:ぽちたま 投稿日:06/06/29(木) 11:41
FTPサーバーへ接続してパーミッションの変更を行いたいと思ったのですが
ftpcmd "site chmod 666 ファイル名"
をするとフリーズしてしまいます。
パーミッション変更するのに何かよい方法はありませんでしょうか
よろしくお願いいたします。
[5824] Re: テキストを暗号化するとき・・・ 投稿者:AKI 投稿日:06/06/28(水) 18:26
私の使っている暗号化の方法ですが、ご参考になれば。
「1バイトずつチェックして、それを隣(それ以外も可能)のバイトと掛け合わせる」
という感じです。ビットシフトを使い、ずらしていきます。
全体が隣同士で繋がっているので、一部(1バイトだけ)書き換えられても、
全部のデータが変わってしまいます。そこそこ暗号化の効果はありそう。
また、復元は、ずらしたビット分だけ戻せばいいのです。お勧めです。
*1バイトをビットごとに、掛け合わせていくということです。
[5806] dialog命令で 投稿者:紅蓮 投稿日:06/06/26(月) 17:32
dialog命令の「保存」ボックスを使用してテキストファイルを保存するとき、コンボボックスの2段目に「HTMLファイル」などの階層(?)を増やすにはどうすればいいですか?
普通は「テキストファイル」の下に「全てのファイル」ときてしまいます。
また、そこで「HTMLファイル」を選択したときに拡張子が入力されていなかった場合自動的に拡張子を入力するにはどのようにすればいいですか?
テキストファイルだけなら「ファイルの拡張子をチェック」→「拡張子がついていないなら「.txt」を書き込む」でできたのですが、ボックスで選んだ格拡張子に自動で選択する方法が分かりません。
宜しくお願いします。
[5807] Re: dialog命令で 投稿者:GENKI 投稿日:06/06/26(月) 20:28
> dialog命令の「保存」ボックスを使用してテキストファイルを保存するとき、
> コンボボックスの2段目に「HTMLファイル」などの階層(?)を増やすにはどうすればいいですか?
> 普通は「テキストファイル」の下に「全てのファイル」ときてしまいます。
> また、そこで「HTMLファイル」を選択したときに拡張子が入力されていなかった場合
> 自動的に拡張子を入力するにはどのようにすればいいですか?
> テキストファイルだけなら「ファイルの拡張子をチェック」→「拡張子がついていないなら
> 「.txt」を書き込む」でできたのですが、ボックスで選んだ格拡張子に自動で選択する方法が分かりません。
> 宜しくお願いします。
分かるような分からないような…。
↓これとか参考になりそうな気がします。
HSP開発Wiki - ファイル選択ダイアログ
http://hspwiki.nm.land.to/?%BE%AE%A5%EF%A5%B6%2F%A5%D5%A5%A1%A5%A4%A5%EB%C1%AA%C2%F2%A5%C0%A5%A4%A5%A2%A5%ED%A5%B0#x00971fe
どうでしょうか?
[5810] Re^2: dialog命令で 投稿者:紅蓮 投稿日:06/06/27(火) 17:35
あ、はい。こんな感じです。
ありがとうございます。
[5789] ボタンにグラフィックを・・・ 投稿者:黒猫 投稿日:06/06/24(土) 22:45
ボタンにグラフィックを貼り付けたいの
ですが どうやるか分かりません
誰か教えてください
お願いします・・・
[5800] Re: ボタンにグラフィックを・・・ 投稿者:秋房 投稿日:06/06/25(日) 17:26
/*何か久々にカキコ:こんな感じでいかがでしょうか。*/
#include "user32.as"
#module
#deffunc Style int p1,int p2,int p3,int p4
GetWindowLong p1,-16+((p4>0)*-4)
SetWindowLong p1,-16+((p4>0)*-4),(stat&(p3^$ffffffff)|p2)
SetWindowPos p1,0,0,0,0,0,$27
return
#global
fn = dirinfo(1)+"/sample/demo/logop.bmp"
buffer 1 :picload fn
xx = ginfo(12)
yy = ginfo(13)
screen 0,xx+20,yy+20
pos 10,10 :objsize xx,yy :button "",*ENDE
Style objinfo(0,2),128,0,0 ;BS_BITMAP=128
LoadImage hInstance,fn,0,0,0,16 ;LR_LOADFROMFILE=16
SendMessage objinfo(0,2),247,0,stat ;BM_SETIMAGE=247 IMAGE_BITMAP=0
stop
*ENDE :dialog "....." :end
[5795] Re: ボタンにグラフィックを・・・ 投稿者:naznyark 投稿日:06/06/25(日) 01:09
> ボタンにグラフィックを貼り付けたいの
> ですが どうやるか分かりません
> 誰か教えてください
> お願いします・・・
hsp3 ボタン 画像 イメージ グラフィック
といったあたりのキーワードを組み合わせて検索してください。
[5797] textについて 投稿者:hsp 投稿日:06/06/25(日) 13:09
HSP2では存在していたtext命令はHSP3では使えませんでした。何か代用できる命令はありますか。教えてください。
[5799] Re: textについて 投稿者:Steep 投稿日:06/06/25(日) 13:59
#include "hsp3util.as"
text 100
emes "アップデートガイドに書いてある"
[5790] screen命令について 投稿者:HSP初心者 投稿日:06/06/24(土) 23:40
ウィンドウを複数 画面上に出したくて
screen命令で、表示させようとしたのですが
画面上に出てくれません どうしてでしょうか?
ウィンドウIDはちゃんと違う数字にしている
はずなんですが・・・
[5796] Re: screen命令について 投稿者:naznyark 投稿日:06/06/25(日) 01:12
> ウィンドウを複数 画面上に出したくて
> screen命令で、表示させようとしたのですが
> 画面上に出てくれません どうしてでしょうか?
> ウィンドウIDはちゃんと違う数字にしている
> はずなんですが・・・
ちゃんとやっているなら問題なくできるはずです。
できないのはあなたがどこかを間違えている可能性が高いです。
[5798] Re^2: screen命令について 投稿者:トホホッティー 投稿日:06/06/25(日) 13:43
> > ウィンドウを複数 画面上に出したくて
> > screen命令で、表示させようとしたのですが
> > 画面上に出てくれません どうしてでしょうか?
> > ウィンドウIDはちゃんと違う数字にしている
> > はずなんですが・・・
>
> ちゃんとやっているなら問題なくできるはずです。
> できないのはあなたがどこかを間違えている可能性が高いです。
まず、できないと言われたソースをここに書き込んでいただいてそれから判断してくれるかたがいるとおもいますので。
間違えてるかもしれないプログラムをここに提示ください。
もし、表示されないのならgselなどと併用して調べてみてください。
screenの書式にも原因があるかもしれないのでそれも含めて提示できたらお願いします。
[5775] 3Dモデルと3Dスプライトのプライオリティ 投稿者:アップリケ 投稿日:06/06/23(金) 11:33
3Dモデルを表示し、3Dスプライト(addplate)のキャラの
表示はできたのですが、3D座標に3Dモデルの前に3Dスプライトを置いても
3Dモデルの方が前に(優先的に)表示されてしまいます。
普通なら、同じ座標に置いてもZバッファなりZソートなりで重なってくれると
思うのですが、そういった設定はできるのでしょうか?
[5778] Re: 3Dモデルと3Dスプライトのプライオリティ 投稿者:K 投稿日:06/06/23(金) 23:22
3.0aならsetpos id x,y,zでzに0.0〜0.9で表示優先度を設定できたけど
3.1b?(1から?)では、バグで出来ない
>2005/12/22 ( Ver3.1β1 )
> 2DオブジェクトのZバッファ更新が無効になるように修正。
これ見ると仕様?って感じもする・・・
>OBJ_NOSORT Zソートを無効にする
これが使用できない事が関係してるかもしれない・・・
(スプライトは常に無効になってて有効に出来ないとか)
3Dモデルより手前に表示したいだけなら
>regobj
>OBJ_LOOKAT 特定オブジェクトの方向を常に向く
これで、一応出来る
(3.1bのβが取れるころには修正される事を期待して・・・)
[5779] Re^2: 3Dモデルと3Dスプライトのプライオリティ 投稿者:アップリケ 投稿日:06/06/24(土) 02:44
> 3.0aならsetpos id x,y,zでzに0.0〜0.9で表示優先度を設定できたけど
> 3.1b?(1から?)では、バグで出来ない
> >2005/12/22 ( Ver3.1β1 )
> > 2DオブジェクトのZバッファ更新が無効になるように修正。
> これ見ると仕様?って感じもする・・・
>
> >OBJ_NOSORT Zソートを無効にする
> これが使用できない事が関係してるかもしれない・・・
> (スプライトは常に無効になってて有効に出来ないとか)
>
> 3Dモデルより手前に表示したいだけなら
> >regobj
> >OBJ_LOOKAT 特定オブジェクトの方向を常に向く
> これで、一応出来る
> (3.1bのβが取れるころには修正される事を期待して・・・)
Kさま、ありがとうございます。
ソースを見直して何度もテストしてみた結果、
オブジェクトIDをdimで宣言した配列で管理するとZソート(Zバッファ?)
できずに強制的な表示優先順位がついてしまうみたいで
配列のない単体の変数だとうまくいくみたいです。
まだ少し納得のいってないので少々研究してみます。
返答ありがとうございました。
[5785] Re^3: 3Dモデルと3Dスプライトのプライオリティ 投稿者:K 投稿日:06/06/24(土) 05:40
>3Dモデルと3Dスプライトのプライオリティ
あ・・・
すみません、勘違いしてました。
普通のスプライトの事だと思ってた・・・
で、試してみたんですが、特に問題ありませんでした。
#include "hgimg3.as"
hgini
clscolor $4040
dim objid,10
setsizef 5,5:setuv 0,0,127,127
addbox boxid:regobj objid(0),boxid
addpos objid(0),0,5,0
texload dir_exe+"\\sample\\hgimg3\\btex.bmp"
addplate platid,1,32,16,0,0,127,127,stat
regobj objid(1),platid
setpos objid(1),0,10,20.0
repeat
addang objid(0),0.01,0.005,0.01:addpos objid(0),0,0,0.2*((cnt\500)<250)-0.2*((cnt\500)>=250)
hgdraw
hgsync 16
loop
後、考えられるのは、3.1bを使っていて通常表示のオブジェクトにも
setefx を使っている(xファイルのモデルだと更にややこしいバグが・・・)
これは、バグだと思うんですが3.1bでsetefxを使用すると表示順が
登録順になります。(IDが若い方が奥に)
一度setefxを使ったオブジェは削除するしかありません
setefx id,511 としても表示順は直りません。
OBJ_LATE を設定するとaddplate との表示順は正しくなりますが
3Dオブジェ同士の表示順が・・・
アップリケさんが、3.0aを使ってたら関係ない話ですが・・・
[5786] Re^4: 3Dモデルと3Dスプライトのプライオリティ 投稿者:アップリケ 投稿日:06/06/24(土) 14:36
あ、Kさまの書き込みがすでに(汗
そうでした、setefx で半透明をつかうとそうなってしまってました。
さらにこれに気が付かなかった理由が、半透明の範囲は0〜255で
255が最大値の実体だと勘違いしてましたです(汗
256がまったく半透明かかってない実体で、これに直してみたところ
ちゃんとした結果がでました。
Kさま、ありがとうございました。
[5787] Re^5: 3Dモデルと3Dスプライトのプライオリティ 投稿者:K 投稿日:06/06/24(土) 15:22
> 255が最大値の実体だと勘違いしてましたです(汗
自分は
>α合成値 = 256〜511 : 合成を行なわない(通常時)
これ見てノーマルの状態が511だと思ってたんだけど
getefxで見てみたら256が初期値でした(^^;
(.txtにも初期256って書いてあった・・・)
でも、257〜511が通常と違う表示になるのは
不味いと思うんだよね・・・(.txtの方を修正すればいい事だけど)
[5766] hgimg3で読み込めるモデリングファイル 投稿者:アップリケ 投稿日:06/06/22(木) 14:20
はじめまして、HSP始めて一週間で初心者なのですが、
hgimg3で読み込むことのできるモデリングファイルはないのでしょうか?
旧Verのhgimgではmxやdxfをサポートされていたようですが
hgimg3ではマニュアルにあるdxfload命令すら存在してないようです。
よろしくおねがいします。
[5767] Re: hgimg3で読み込めるモデリングファイル 投稿者:Steep 投稿日:06/06/22(木) 16:20
addxfile参照。
[5769] Re^2: hgimg3で読み込めるモデリングファイル 投稿者:アップリケ 投稿日:06/06/22(木) 17:14
> addxfile参照。
ありがとうございます。"load"やdxf,mxという単語に
とらわれすぎて新しい命令に気が付かなかったようでした。
自作のオブジェクトをxに変換しなおして、しっかり表示できるように
なりました。改めてありがとうございます。
[5768] ウィザードなしで印刷 投稿者:ヌシロ 投稿日:06/06/22(木) 16:24
JPG画像を直接プリンターに印刷したいのですが、何か良い方法を知っている方はいませんか?
プリンターの選択や設定などを出さずにプリントアウトしたいのです。
windows2000では、JPGを標準で入っている[imaging preview]というソフトに関連付けをして
exec "ファイル名",32
とすればプリンターから印刷されました。
しかしXPでは、そのソフトはないし、msペイントや、EXCEL、メディアプレイヤーに関連付けをしても「画像とFAXビューワー」が起動するだけです。
どなたか知っている方いらっしゃいませんでしょうか、おてすきでしたら教えてください
[5728] RS232Cデータ取り込み 投稿者:Mizu 投稿日:06/06/16(金) 21:02
RS232Cを利用してバーコードのデータを取り込もうとしていますが8桁以上が取り込めません。
comget 変数,桁数で桁数を指定できると思うのですが減らす事はできますが8以上にしても8桁(statも8)となってしまいます。
OS付属のハイパーターミナルでは問題なく読取って表示されています。
バーコードリーダーと通信の設定も間違いありません。
原因が判ったら教えて下さい。ソースは次のようです
#include "hspext.as" ;for comopen
QRdat=""
*main
comopen 1,"baud=38400 parity=N data=8 stop=1" ;RS232C オープン
pos 10,10:mes "QR Codeを読ませて下さい"
while QRdat=""
comget QRdat
pos 60,50:mes "受信待ち"
wend
comclosess ;RS232C クローズ
mes "stat="+stat
mes "受信データ:"+QRdat
stop
[5735] Re: RS232Cデータ取り込み 投稿者:蘭 投稿日:06/06/17(土) 16:52
> while QRdat=""
> comget QRdat
> pos 60,50:mes "受信待ち"
> wend
whileに続く条件が満たされている間だけの繰り返しになる為
リーダーがデータをはき出している最中に受信し、ループから
抜け出してしまっている気がします。
comgetc を使い、ループ監視させてみてはどうでしょうか。
お使いのバーコードリーダーにもよりますが、読み取り後に
バーコード以外の文字を付加する設定を利用し、例えば
TAB(ASCIIコード9)を受信した時点や、指定文字数に達した
ら終了する処理にしてみるのが良いのかもしれません。
サンプル(\sample\hspext\TERMINAL.hsp)が参考になると思います
> comclosess ;RS232C クローズ
comclose
[5747] Re^2: RS232Cデータ取り込み 投稿者:Mizu 投稿日:06/06/19(月) 20:40
ありがとうございました。
言われた通りでした。getcomの後にwaitを入れて間を取ってやる事で解決しました。掲示板の有難さを痛感しました。
[5752] Re^3: RS232Cデータ取り込み 投稿者:kz3 投稿日:06/06/20(火) 13:40 <URL>
> ありがとうございました。
> 言われた通りでした。getcomの後にwaitを入れて間を取ってやる事で解決しました。掲示板の有難さを痛感しました。
マルチに投稿したかいがあったようですが、バグトラックも放置する気ですか?
[5757] Re^4: RS232Cデータ取り込み 投稿者:kz3 投稿日:06/06/21(水) 10:18 <URL>
> マルチに投稿したかいがあったようですが、バグトラックも放置する気ですか?
バグトラックの方は削除したのか、されたのか分かりませんが、
一応なくなっていたのでそちらの方は一件落着です。
[5758] Re^5: RS232Cデータ取り込み 投稿者:Steep 投稿日:06/06/21(水) 17:45
> バグトラックの方は削除したのか、されたのか分かりませんが、
> 一応なくなっていたのでそちらの方は一件落着です。
誰かが却下してくれた模様。
http://quasiquote.org/hspbt/guest?project=hspb3&action=view_report&id=71
[5741] #deffuncの2と3の違い 投稿者:ぽちたま 投稿日:06/06/18(日) 11:15
はじめまして、2から3へソース書き換えしていたのですが
どうしても躓いてしまったのでどなたか教えてください。
ファイル暗号化するソースなのですが
暗号化ルーチンの入ったサブソースで命令指定しているのですが
メインソース側
bload "text",t_inf
encode t_inf
サブソース側(暗号化処理)
#deffunc encode val encdata
〜暗号化ルーチン〜
return
#global
上記のような処理を以前のバージョンではいけたのですが
3に変更してからどうしても「代入できない変数名を指定してます」
というエラーでどうしても先に進めません
何か間違えている箇所ありましたらご指摘お願いいたします。
[5742] Re: #deffuncの2と3の違い 投稿者:ぽちたま 投稿日:06/06/18(日) 13:27
すいません自己解決しました^^;
[5725] はじめまして。 投稿者:ホールトン 投稿日:06/06/16(金) 15:18
キャラクターに話しかける方法を教えていただけませんか!?
[5727] Re: はじめまして。 投稿者:kz3 投稿日:06/06/16(金) 15:59 <URL>
> キャラクターに話しかける方法を教えていただけませんか!?
キャラクターの前に行って「すみません」と一言断りを入れてから本題を切り出せばいいんじゃないですか?
ホールトンさんの言ってる「キャラクター」が何を意味しているのか、
全くわかりません。
それ以前に教えても、分かったのかどうかすらも答えない人には誰も教えませんです。
# HSP CENTER ( No.3351 )
# http://hspcenter.com/bbs/hspbbs.cgi
反応が無いんだから、それ以上教えられないのも当然ですよね。
[5713] hgimg3のPC依存? 投稿者:tosi 投稿日:06/06/15(木) 18:46
HSP3.0でhgimg3.asを使用してaddboxでボックスを作成し、
texloadで画像を貼り付けて自分視点の迷路を作成しました。
ライトの設定がうまくいかず
setang HGOBJ_LIGHT
でパラメータを設定せずに実行するとオブジェクトが明るくなり
うまくいきました。(これがいいのかわかりませんが)
他のPC(note)で実行すると画面が暗いままなのですが、
原因がわかりません。directXやhspのバージョンは問題
ないようなのですが、何か他の原因があるのでしょうか?
[5722] Re: hgimg3のPC依存? 投稿者:K 投稿日:06/06/16(金) 01:50
> HSP3.0でhgimg3.asを使用してaddboxでボックスを作成し、
3.0aのhgimg3で、addboxは法泉バグでライトの影響がおかしい
3.1β3で修正されたが
http://quasiquote.org/hspbt/guest?project=hgimg3&action=view_report&id=16
http://quasiquote.org/hspbt/guest?project=hgimg3&action=view_report&id=19
こんな、感じ
xモデルを使うって手があるけど普通の半透明でバグる・・・
[5724] Re^2: hgimg3のPC依存? 投稿者:tosi 投稿日:06/06/16(金) 11:33
3.1bを試してみます。
ご返答ありがとうございます。
[5723] Re^2: hgimg3のPC依存? 投稿者:K 投稿日:06/06/16(金) 03:20
> 3.0aのhgimg3で、addboxは法泉バグでライトの影響がおかしい
法泉じゃなくて、法線だった・・・
[5715] テキストファイルの読み込み 投稿者:雪緒 投稿日:06/06/15(木) 23:09
HSP3で以下のスクリプトを実行するとErro 18 in line 9
が出て実行できません
1行目title" "
buffer 3,640,140:cls 4;半透明合成用の黒画面
screen 0,640,480:cls 4;画面の初期化
objmode 1:objsize 200,24
dim buf,32000 ;テキストが読み込めるサイズを確保
sdim a,256:sdim c,256;文字列の一時記憶を確保
sdim selscn,4,256;選択肢のジャンプ先シーン保存用
bload"adv.txt",buf;シナリオを読み込む
notesel buf:noteinfo i
cur=0;現在読み進んでる行インデックス
だいぶ前に発売した、おにたまさん著作の
「無料ツールでゲームプログラミングHSP編」に記載されている
スクリプトを参考にしてみたのですが
3になってからの仕様変更でどこかが違うのでしょうか・・・
教えていただけると幸いです
[5721] Re: テキストファイルの読み込み 投稿者:Kpan 投稿日:06/06/16(金) 00:48
9行目にエラーがある〜、と表示されてるので、素直に
その行をよくチェックしましょう。→noteinfo関数
www.google.co.jp/search?num=20&lr=lang_ja&newwindow=1&q=noteinfo+HSP3
[5409] IEコンポーネント&Shockwaveで異常終了 投稿者:junior 投稿日:06/05/22(月) 16:01
axobj ie, "Shell.Explorer.2",ginfo_winx,ginfo_winy
ie->"Navigate" "http://www.kawai.co.jp/school/sw/toypiano.html"
ShockwavePlayerがインストールされているとこれでコケます。(内部エラー1)
IEコンポーネントの初期化や制御次第で回避できますでしょうか?
[5481] Re: IEコンポーネント&Shockwaveで異常終了 投稿者:junior 投稿日:06/06/01(木) 16:04
すみません。埋まってしまったのでageます。
よろしくおねがいします。
> axobj ie, "Shell.Explorer.2",ginfo_winx,ginfo_winy
> ie->"Navigate" "http://www.kawai.co.jp/school/sw/toypiano.html"
>
> ShockwavePlayerがインストールされているとこれでコケます。(内部エラー1)
> IEコンポーネントの初期化や制御次第で回避できますでしょうか?
[5695] Re^2: IEコンポーネント&Shockwaveで異常終了 投稿者:junior 投稿日:06/06/13(火) 09:36
埋ってしまったので、もう一度だけageさせてください。
よろしくおねがいします。
> すみません。埋まってしまったのでageます。
> よろしくおねがいします。
>
> > axobj ie, "Shell.Explorer.2",ginfo_winx,ginfo_winy
> > ie->"Navigate" "http://www.kawai.co.jp/school/sw/toypiano.html"
> >
> > ShockwavePlayerがインストールされているとこれでコケます。(内部エラー1)
> > IEコンポーネントの初期化や制御次第で回避できますでしょうか?
[5696] Re^3: IEコンポーネント&Shockwaveで異常終了 投稿者:hiroki 投稿日:06/06/13(火) 10:21
こちらでこの2行で実行しましたが、異常終了等は
起こりませんでした。
ただ、肝心のページがありませんでした。
Shockwaveがインストールされているか、通常の
ぷらうざでは動くかどうか確認してください。
環境の問題かもわかりませんね。
それと、埋まったために何度も書き込むのはどうかと
思います。
返信がないのはそれなりの理由があるハズですから。
[5699] Re^4: IEコンポーネント&Shockwaveで異常終了 投稿者:junior 投稿日:06/06/13(火) 16:41
コメントありがとうございます。
該当のurlはこちらで見る限りまだ生きています。
ShockwavePlayerがインストールされている場合は、
普通にブラウザ(IE等)で見た場合、中央にShockwaveの
コンテンツが貼られていて、鍵盤楽器風の絵が出ます。
インストールされていない場合は、当時はShockwavePlayerの
ダウンロードへ誘導するようなリンクが表示されていましたが、
現在は裏で自動的にダウンロードされるか、ダイアログが出てダウンロード
を促すようになっているようです。
XPは表に出て来なかったので裏で勝手に?、2000ではダイアログがでました。
いずれの場合もIE、ネスケ、FireFoxで見る限りは挙動は正常です。
先のスクリプトにてIEコンポーネントを貼り付けたときのみ、
当該症状が発生します。(現在でも)
なにかヒントでもいただければありがたいです。
> 返信がないのはそれなりの理由があるハズですから。
質問の仕方、言葉遣い等になにか無作法がありましたら改めますので
ご指摘いただければ幸いです。
よろしくおねがいいたします。
[5700] Re^5: IEコンポーネント&Shockwaveで異常終了 投稿者:hiroki 投稿日:06/06/13(火) 17:19
こちらも、IEとFairfoxでは正常に動作しましたが、IEコンポーネント使用では
「取り消されたアクション」というメッセージがでます。
プラグインはIEコンポーネントでは使用出来ないのかもしれませんね。
> 質問の仕方、言葉遣い等になにか無作法がありましたら改めますので
> ご指摘いただければ幸いです。
>
そういう意味ではありません。
すいません。
[5701] Re^6: IEコンポーネント&Shockwaveで異常終了 投稿者:hiroki 投稿日:06/06/13(火) 18:37
HSPのIEコンポーネントサンプルを実行しても、「取り消されたアクション」という
メッセージがでるようになってます。
XPに移行してからHSPのIEコンポーネントサンプルを実行してなかったから、
XPに問題があるのかな。
あら、おかしいですね。(T_T)
[5712] Re^7: IEコンポーネント&Shockwaveで異常終了 投稿者:junior 投稿日:06/06/15(木) 13:06
IEコンポーネントでurlが通らないのはおそらくproxyの設定のような気がします。
[5684] dirlistについて 投稿者:ギャーゴ 投稿日:06/06/12(月) 17:41
dirlistでファイルを取得する時、
ファイルマスクを一種類しか指定できないのですが
複数指定するにはどうすればいいのでしょうか?
素人な質問ですいませんが、教えてくだされば幸いです。
[5685] Re: dirlistについて 投稿者:hiroki 投稿日:06/06/12(月) 18:17
dirlistをファイルの種類分繰り返すか、*.*を指定して不要なファイルは
削除するか......。
[5686] Re^2: dirlistについて 投稿者:ギャーゴ 投稿日:06/06/12(月) 19:31
> dirlistをファイルの種類分繰り返すか、*.*を指定して不要なファイルは
> 削除するか......。
そうですか。じゃぁ後者の方で頑張ってみたいと思います。わざわざご丁寧にありがとうございました。
[5694] Re^3: dirlistについて 投稿者:hiroki 投稿日:06/06/13(火) 09:32
ちなみに、dirlistで得たファイルの拡張子は、小文字や大文字があると思うので
すべて小文字に変換させた方が処理が楽です。
以下は、僕が実際に使用しているものです。
Ext=".jpg",".bmp",".gif",".jpe",".jpeg",".png"
n=notemax-1
while n>=0
; 画像ファイル以外ならファイルリストから削除
eck=0
noteget img,n
img=getpath(img,16) ;小文字に変換
noteadd img,n,1
repeat 6
if getpath(img,8+2)=Ext(cnt) : eck=1 : break
loop
if eck=0 : notedel n
n-
wend
[5702] Re^4: dirlistについて 投稿者:osakana 投稿日:06/06/13(火) 19:37
> 以下は、僕が実際に使用しているものです。
試しに使って見ました。(少し改造してますが・・・)
//--------------------
chdir dir_win
sdim list,6400
notesel list
dirlist list,"*.*",1
Ext=".jpg",".bmp",".gif",".jpe",".jpeg",".png"
ExtMax=length(ext)
; 画像ファイル以外ならファイルリストから削除
repeat notemax
noteget img,n
img=getpath(img,16) ;小文字に変換
repeat ExtMax
if getpath(img,2)=Ext(cnt) :noteadd img,n,1 :n++ :break
if cnt=ExtMax-1 :notedel n
loop
loop
objsize 640,350 :listbox index,,list
objsize 640,25 :button "開く",*open
stop
//----
*open
noteget img,index
exist img
if strsize=-1 :end
exec img,,"open"
//--------------------
[5708] Re^5: dirlistについて 投稿者:hiroki 投稿日:06/06/14(水) 11:48
> > 以下は、僕が実際に使用しているものです。
> 試しに使って見ました。(少し改造してますが・・・)
>
これで、selfolderを加えれば立派なソフトですね。(^^;)
[5687] Re^3: dirlistについて 投稿者:osakana 投稿日:06/06/12(月) 19:53
解決したみたいですが、
一応前者の方で作ってみました。
//------------
//コメント部分を有効にするとソートします。
//#include "hspda.as"
chdir dir_exe
list="*.exe\n*.dll"
notesel list
sdim all,6400
sdim txt,3200
sdim buf,32
repeat notemax
noteget buf,cnt
dirlist txt,buf,3
all+=""+txt
loop
//poke all,strlen(all)-2,0
//sortnote all,0
//poke all,strlen(all)-2,0
mesbox all,640,480
//--------------------
[5693] Re^4: dirlistについて 投稿者:osakana 投稿日:06/06/13(火) 01:32
見直したら変数のネーミングが不適切で、
用途と名前が合ってなかった・・・(すみません)
変数名は考えて決めないといけませんね。
[5653] 50桁くらいの電卓っぽいものは… 投稿者:紅蓮 投稿日:06/06/09(金) 17:18
題名のまんまですが、50桁くらいの電子計算のスクリプトはどう記述すればいいですか?
sdim命令を入れても5桁くらいまでしか表示されません…
と言うかそもそも50桁の電子計算は可能ですか?
[5679] Re: 50桁くらいの電卓っぽいものは… 投稿者:naznyark 投稿日:06/06/11(日) 02:45
速度重視でないなら文字列を使って筆算の要領でやるのが単純。
#module
#defcfunc add str _p1, str _p2
sdim s, 1024, 3
s(0)=_p1, _p2
dim l, 2
l(0)=strlen(s(0)), strlen(s(1))
if l(0)>l(1) : ll=l(0) : else : ll=l(1)
dim v, 3
c=0
repeat ll
if cnt<l(0) : v(0)=int(strmid(s(0), l(0)-cnt-1, 1)) : else : v(0)=0
if cnt<l(1) : v(1)=int(strmid(s(1), l(1)-cnt-1, 1)) : else : v(1)=0
v(2)=v(0)+v(1)+c
s(2)=strf("%1d", v(2)\10)+s(2)
c=v(2)/10
loop
if c : s(2)="1"+s(2)
return s(2)
#global
randomize
sdim vs, 1024, 2
repeat 50 : vs(0)+=strf("%1d", rnd(10)) : loop
repeat 50 : vs(1)+=strf("%1d", rnd(10)) : loop
mes vs(0)
mes vs(1)
mes
mes "a + b = "+add(vs(0), vs(1))
stop
[5667] Re: 50桁くらいの電卓っぽいものは… 投稿者:774 投稿日:06/06/10(土) 15:46
//以下はプラグイン等を使わず自作する場合の話です
変数には扱える数値の範囲に限界があって
それ以上の数値を扱うことができませんが、
ひとつの数値を分割して配列に入れることで
無理やり計算することができます
具体的な処理方法は、多倍長演算などでググるか、
アルゴリズム関係の書籍を探すことをお勧めします
入力にinputを使うならstrmid,int等で数値型配列に格納できますし、
strfを使いつつ文字列変数に上位桁から追加していけば
mesやobjprm等で表示することができます
[5654] Re: 50桁くらいの電卓っぽいものは… 投稿者:Irisawa 投稿日:06/06/09(金) 17:47
> 題名のまんまですが、50桁くらいの電子計算のスクリプトはどう記述
> すればいいですか?
> sdim命令を入れても5桁くらいまでしか表示されません…
> と言うかそもそも50桁の電子計算は可能ですか?
double型とstrf関数を使用することで(表示は)できそうな気もします。
ddim d, 1
d = 1.0
repeat 50
d *= 10
loop
mes strf("%50.0f", d)
stop
よく確認していませんが文字数は50文字だったようです。
(間違いがあったら申し訳ありません)
[5665] Re^2: 50桁くらいの電卓っぽいものは… 投稿者:Shark++ 投稿日:06/06/10(土) 11:08
ん?doubleってそんなに精度ありましたっけ?
16桁ぐらいしか出ていないようですが...
mes strf("%.50f", 10.0 / 3.0)
[5663] Re^2: 50桁くらいの電卓っぽいものは… 投稿者:miku 投稿日:06/06/10(土) 07:22
> > 題名のまんまですが、50桁くらいの電子計算のスクリプトはどう記述
> > すればいいですか?
> > sdim命令を入れても5桁くらいまでしか表示されません…
> > と言うかそもそも50桁の電子計算は可能ですか?
>
> double型とstrf関数を使用することで(表示は)できそうな気もします。
>
> ddim d, 1
> d = 1.0
> repeat 50
> d *= 10
> loop
> mes strf("%50.0f", d)
> stop
>
> よく確認していませんが文字数は50文字だったようです。
> (間違いがあったら申し訳ありません)
doubleの精度は15,6桁程度です。
標準では無理だがBignumプラグインとか使えば可能だとおもいます。
[5657] ユーティリティソフト 投稿者:ピントはずれ 投稿日:06/06/09(金) 23:22
HSPは、他の言語と比較すると敷居が低そうですが、デフラグとか復元ソフト、メモリークリナーなどは作成できるのでしょうか?
ど素人の質問です。よろしくおねがいします。
[5678] Re: ユーティリティソフト 投稿者:Steep 投稿日:06/06/11(日) 00:40
> HSPは、他の言語と比較すると敷居が低そうですが、デフラグとか復元ソフト、メモリークリナーなどは作成できるのでしょうか?
> ど素人の質問です。よろしくおねがいします。
メモリクリーナーはHSPを使うと簡単に作れるが、
他の二つはハードウェアへの低レベルなアクセスを必要とするので
HSPを使うメリットはほとんどなくなってしまう。
一応、作成できないことはないはずだが、
デフラグツールは素人が簡単に作れるようなソフトではない。
[5666] Re: ユーティリティソフト 投稿者:rew 投稿日:06/06/10(土) 15:19
> HSPは、他の言語と比較すると敷居が低そうですが、デフラグとか復元ソフト、メモリークリナーなどは作成できるのでしょうか?
> ど素人の質問です。よろしくおねがいします。
めもりーくりーなーはHSP製ですよ。
[5664] Re: ユーティリティソフト 投稿者:hiroki 投稿日:06/06/10(土) 08:13
プログラミング能力があれば可能です。
現に作っている人はたくさんおります。
[5668] sendmsgて何 投稿者:bimax 投稿日:06/06/10(土) 18:21
cls 1
pos 5,13 : mes "Infox" : pos 50,13 : input x,60,16
pos 5,30 : mes "Infoy" : pos 50,30 : input y,60,16
pos 5,47 : mes "Infoz" : pos 50,47 : input z,60,16
pos 2,0 : objsize 120,70 : button "Info",*dr1 : *dr1
sendmsg objinfo_hwnd(3),$f4,7,0
stop
inputで入力ボックスを作ってその上にボタンを作るまでは分かるのですが
6行目は何をやってるんでしょうか?ボタンも押せなくなってるし。
教えてください
[5677] Re: sendmsgて何 投稿者:Steep 投稿日:06/06/11(日) 00:34
難しくいうと、
「ボタンにメッセージを送ってスタイルを変更している」
もう少しわかりやすくいうと、
「ボタンの形を変えなさいという命令を出している」
ちょくと氏のページ(http://yokohama.cool.ne.jp/chokuto/)の
「Windowsの仕組み」を読んでみるとなんとなく理解できると思う。
[5669] Re: sendmsgて何 投稿者:Kpan 投稿日:06/06/10(土) 19:40 <URL>
ボタン(BS_PUSHBUTTON)を、sendmsg命令でグループボックス(BS_GROUPBOX)に
スタイル変更しています。
http://yokohama.cool.ne.jp/chokuto/urawaza/prm/ctl_style.html#button
実際のところ、グループボックス内の表示の挙動がおかしくなるバグ(?)が
あるので使えないです。
[5539] スクリーンセーバで設定画面でのループ 投稿者:mine 投稿日:06/06/06(火) 07:35
みなさんこんにちは。
スクリーンセーバで設定画面(コンフィグ?)の時
ループしていると設定しようとすると消えてしまうようです。
(stopで止めてあると消えません。)
サンプルのスクリーンセーバでもstopをrepeat:await 1:loopに変える
とマウスを動かすと設定画面が消えてしまいます。
素直にstopにすればいいのですが、以下のようにコンボボックスの
内容が変わったら、連動して他の値を変えたい場合があります。
2.61では、stopでなくてもよかったようです。
windows2000下で確認しました。
stopして割り込みとかで出来るんでしょうか?
例
a=0:b="0\n1\n2"
combox a,,b
input c,100,20
button "end",*prg_end
sv=a
repeat
repeat:if a!sv:sv=a:break:else:await 1:loop
objprm 1,a
loop
*prg_end
end
[5541] Re: スクリーンセーバで設定画面でのループ 投稿者:kz3 投稿日:06/06/06(火) 12:12 <URL>
> みなさんこんにちは。
> スクリーンセーバで設定画面(コンフィグ?)の時
> ループしていると設定しようとすると消えてしまうようです。
XP sp2 でも確認しました。
うーん...これが仕様だとこれまでのHSP的な書き方が出来ないので不具合っぽいです。
> windows2000下で確認しました。
> stopして割り込みとかで出来るんでしょうか?
stopを残していてもwait(await)を使うとダメなようなので、wait側に問題があるようです。
ただしデバッグ時は大丈夫でscrを生成するときに問題あるコードが生成されている様子です。
stopのみを使い、コントロールに対する操作はメッセージを処理することでなんとかなります。
でもメッセージ処理はWinAPIと深く関わるので「拡張文法」に属します。
HSP初心者さんでも出来るように「基本文法」で行えるようにしないとちょっと問題ありです。
なのでやっぱりこれは仕様ではなく不具合でしょう。
mineさんはメッセージ処理分かりますか?
[5549] Re^2: スクリーンセーバで設定画面でのループ 投稿者:mine 投稿日:06/06/07(水) 06:03
みなさん、どうもありがとうございます。
hirokiさん、ありがとうございます。
即席で作ると、間違えてしまいますね。
stopで止めたくない言い訳をしたかった…って感じですか(^^;
> mineさんはメッセージ処理分かりますか?
kz3さん、ありがとうございます。
割り込みって言うと、oncmdって感じですが、どんなメッセージIDを
受け取った時かが分からないってところでしょうか。
受け取ったあとも分かりませんが…(^^;;
また、waitを使ったら設定画面が閉じてしまうということであれば
ちょっと不便かもしれないですね。
[5550] Re^3: スクリーンセーバで設定画面でのループ 投稿者:kz3 投稿日:06/06/07(水) 11:34 <URL>
> 割り込みって言うと、oncmdって感じですが、どんなメッセージIDを
> 受け取った時かが分からないってところでしょうか。
HSPWiKiのバグトラックに挙げておきました。
今のところはコントロールからの通知メッセージを処理して対応してみてください。
arusave.hspの設定画面処理*sscfg〜*ssendを次のものに置き換えてテストしてみてください。
*sscfg
gsel 0: width 320,200: cls
cbLIST = "*sscfg\n*sspre\n*ssproc": cbSEL = 0
edHELP = "コンフィグ", "プレビュー", "処理": edTEX = edHELP.cbSEL
combox cbSEL,,cbLIST: hComb = objinfo( stat, 2 )
input edTEX, ginfo_winx, 20
pos 220,140:button "OK",*ssend
oncmd gosub *sscfg_command, $0111 ; WM_COMMAND
stop
*sscfg_command
if( lparam == hComb ){ ; lparamにオブジェクトのハンドルが入っています
switch( wparam>>16 & $FFFF ) ; wparamの上位16ビットに通知コードが入っています
case 1 ; CBN_SELCHANGE( 選択項目の変更 )
sendmsg hComb, $147, 0, 0 ; CB_GETCURSEL( 選択項目のインデックス取得 )
if stat >= 0: objprm 1, edHELP.stat ; インデックスに見合ったヘルプ表示
swbreak
swend
}
return ; ボタン命令もここを通るのでHSPにメッセージを渡すこと
*ssend
end
[5635] Re^4: スクリーンセーバで設定画面でのループ 投稿者:kz3 投稿日:06/06/08(木) 09:22 <URL>
> oncmd gosub *sscfg_command, $0111 ; WM_COMMAND
> stop
>*sscfg_command
...
> return ; ボタン命令もここを通るのでHSPにメッセージを渡すこと
>*ssend
> end
oncmd gosub を oncmd (goto)に変えると通知コードが分からなくてもどうにか出来ます。
上記引用した範囲を次のものに変えてみてくださいー。
oncmd *sscfg_command, $0111 ; WM_COMMAND
*sscfg_stop
stop
*sscfg_command
; goto割込みの場合はメッセージを処理した後で飛ぶので
; cbSELにコンボボックスの選択インデックスが入っています。
if( lparam == hComb ): objprm 1, edHELP.cbSEL
goto *sscfg_stop
*ssend
end
ただし、リストから選択した場合は問題ないですが、
コンボボックスのエディットボックス部分にフォーカスが当たっているときに、
マウスホイールやキーボードの上下キーで項目を変更した場合は反応が遅いのが気になります...
[5633] Re^4: スクリーンセーバで設定画面でのループ 投稿者:mine 投稿日:06/06/08(木) 06:25
kz3さん、どうもありがとうございます。
すごい、できてますね。
いつも「コンボボックスの選択が変わったら…」の処理を
ループで監視してやっているので、他の使い道もありそうです。
いつも投稿する時、広告の投稿があるのですがきちんと消えているので
onitamaさんが見ていて、簡単に出来るようになるように期待しつつ…(^^
[5634] Re^5: スクリーンセーバで設定画面でのループ 投稿者:kz3 投稿日:06/06/08(木) 09:08 <URL>
>いつも「コンボボックスの選択が変わったら…」の処理をループで監視してやっているので、
それが従来のHSP的なやり方だと思うので、
この「コンフィグ処理でループを回せない」問題はきっと解決してくれますよ。(多分)
mineさんもバグトラック(ID70)の動向をチェックしていてくださいー。
[5544] Re^2: スクリーンセーバで設定画面でのループ 投稿者:kz3 投稿日:06/06/06(火) 15:41 <URL>
>wait側に問題があるようです
ちょっと嘘つきました。
wait単体ではなくループカウントに問題があるようです。
waitの待ち時間を1などの短い時間ではなく、10などカウンタを観察できるくらいの値に設定すると、
30回ループ辺りでクライアント領域に対して何か操作をすると設定画面が...落ちる?ようです。
さらに「repeat-wait-loop」を「*@-wait-goto *@b」に変えてみたところ、
同じ現象が起きました。やっぱりwaitなのかな...。
[5542] Re^2: スクリーンセーバで設定画面でのループ 投稿者:hiroki 投稿日:06/06/06(火) 14:14
意味が解らずに取りあえずおかしいところを指摘
しましたが、kz3さんさすがすね。^^;
[5540] Re: スクリーンセーバで設定画面でのループ 投稿者:hiroki 投稿日:06/06/06(火) 11:00
objprm 1,a
のところ、
c=a:objprm 1,c
と書くべきだとおもいます。
[5507] 音声認識で文字入力 投稿者:h2-2 投稿日:06/06/03(土) 15:18
今年の2月ぐらいまで、
HSPwikiで「音声認識で文字入力をしよう」という項目があったのですが、
そこで紹介されていたサンプルスクリプトをコピーされている方いらっしゃいませんか?
いつのまにか、何らかの理由で削除されてしまってるみたいで…。
[5508] Re: 音声認識で文字入力 投稿者:Shark++ 投稿日:06/06/03(土) 16:12
正確には「音声認識エンジンを使って文字を入力してみる」というページのようですね
残念ながらこれだけしかわからなかったです。
[5528] Re^2: 音声認識で文字入力 投稿者:h2-2 投稿日:06/06/05(月) 21:26
フォローありがとうございます。
> 残念ながらこれだけしかわからなかったです。
そうですか…。アーカイブでもぐーぐるきゃっしゅでもだめでした…。
残念です…。
特殊な記述は1行か2行だった気がするんですよね。
SAPIで認識させたあと共有メモリか何かで拾ってくるんでしょうか…。
あるいは、文字にしたやつをクリップでコピー??
うーーん。
[5529] Re^3: 音声認識で文字入力 投稿者:Irisawa 投稿日:06/06/05(月) 22:10
> そうですか…。アーカイブでもぐーぐるきゃっしゅでもだめでした…。
> 残念です…。
バックアップから一番新しいものを復元してみました。
http://quasiquote.org/hspwiki/MSAgent
一度、ページを再作成しないとバックアップ(履歴)がとれないよう
なので間にダミー編集が入っていますが...。
あと、完全に問題なく復元できているかどうかの保証はありません。
(Perlを使用して先頭のゴミ取りをしたのでちょっと化けていたり
おかしい部分があるかも?)
[5530] Re^4: 音声認識で文字入力 投稿者:Irisawa 投稿日:06/06/05(月) 22:12
> バックアップから一番新しいものを復元してみました。
> http://quasiquote.org/hspwiki/MSAgent
っていうか、もしかしてこれじゃない?
これじゃないとちょと見つかりませんが、バックアップ探せば
あると思います。
[5537] Re^5: 音声認識で文字入力 投稿者:h2-2 投稿日:06/06/06(火) 01:40
> っていうか、もしかしてこれじゃない?
すみません。お手数おかけして。
音声合成のほうではないんです。
> これじゃないとちょと見つかりませんが、バックアップ探せば
> あると思います。
拾えた文章が、「音声認識エンジンを使って文字を入力してみる。
$$toc - → HSP3・サンプルスクリプト に戻る ----
HSP3.1β1 XPsp2 で動作確認 (3.0a以降です。)
オートメーションに対応していてイベントも取れます。
サンプルもコンパクトに書けました。・・・
が、しかし 色々とセットアップしなければいけません。
Microsoft SpeechSDK5.1 (6... 」
という部分だけなんですが、
これで探していただくことってできそうですか?
何卒よろしくお願いします。
[5538] Re^6: 音声認識で文字入力 投稿者:Irisawa 投稿日:06/06/06(火) 02:12
> 拾えた文章が、「音声認識エンジンを使って文字を入力してみる。
> $$toc - → HSP3・サンプルスクリプト に戻る ----
> HSP3.1β1 XPsp2 で動作確認 (3.0a以降です。)
> オートメーションに対応していてイベントも取れます。
> サンプルもコンパクトに書けました。・・・
> が、しかし 色々とセットアップしなければいけません。
> Microsoft SpeechSDK5.1 (6... 」
> という部分だけなんですが、
> これで探していただくことってできそうですか?
これでしょうか。
http://quasiquote.org/hspwiki/%b2%bb%c0%bc%c7%a7%bc%b1%a5%a8%a5%f3%a5%b8%a5%f3%a4%f2%bb%c8%a4%c3%a4%c6%ca%b8%bb%fa%a4%f2%c6%fe%ce%cf%a4%b7%a4%c6%a4%df%a4%eb
復元してみました。
[5551] Re^7: 音声認識で文字入力 投稿者:h2-2 投稿日:06/06/07(水) 19:17
> これでしょうか。
ハイ、まさにこれです。
> 復元してみました。
御礼が遅れてしまい申し訳ありません。
大変お手数おかけいたしました。
ありがとうございます。
早速記事ごとコピーさせていただきました。
[5512] サブルーチン内のbutton命令 投稿者:tona改 投稿日:06/06/04(日) 16:50
はじめまして。
最近HSPを始めたのですが、サブルーチン内でbutton命令を使って
returnで戻るというのを試してみたところ
「サブルーチン外のreturnは無効です」というエラーが出てしまいました。
*サブ1
pos 0,0
objsize 150
combox ENNO,0,ENBOX
button "OK?" , *戻る
stop
*戻る
return
このような表記はおかしいのでしょうか?
[5515] Re: サブルーチン内のbutton命令 投稿者:Irisawa 投稿日:06/06/04(日) 19:15
> はじめまして。
> 最近HSPを始めたのですが、サブルーチン内でbutton命令を使って
> returnで戻るというのを試してみたところ
> 「サブルーチン外のreturnは無効です」というエラーが出てしまい
> ました。
実はgotoするとサブルーチンネストがすべてリセットされてしまうと
いう仕様になっています。
これは非常に困るので修正して欲しい所なんですけどね。
[5517] Re^2: サブルーチン内のbutton命令 投稿者:tona改 投稿日:06/06/04(日) 21:23
> 実はgotoするとサブルーチンネストがすべてリセットされてしまうと
> いう仕様になっています。
> これは非常に困るので修正して欲しい所なんですけどね。
という事はサブルーチン内でbutton命令は使えないという事でしょうか?
何か他に方法はないでしょうか?
[5518] Re^3: サブルーチン内のbutton命令 投稿者:Irisawa 投稿日:06/06/04(日) 22:50
> という事はサブルーチン内でbutton命令は使えないという事でしょうか?
> 何か他に方法はないでしょうか?
この場合はbutton gosubを使用してください。
button gosubの次にreturnすればOKです。
[5514] Re: サブルーチン内のbutton命令 投稿者:tona改 投稿日:06/06/04(日) 17:53
すみません、説明不足でした。
*メイン
gosub *サブ1
<<略>>
*サブ1
pos 0,0
objsize 150
combox ENNO,0,ENBOX
button "OK?" , *戻る
stop
*戻る
return
で、エラーが出るのです。
日本語のラベル見やすくてつい使ってしまったのですが、以後気をつけます。
[5523] Re^2: サブルーチン内のbutton命令 投稿者:sin 投稿日:06/06/05(月) 09:47
> *メイン
> gosub *サブ1
> <<略>>
>
> *サブ1
> pos 0,0
> objsize 150
> combox ENNO,0,ENBOX
> button "OK?" , *戻る
> stop
> *戻る
> return
>
> で、エラーが出るのです。
>
おぉ、そう言う事だったのですか、
早とちりして偉そうに書いてしまい申し訳ないですm(_ _;)m
[5524] Re^3: サブルーチン内のbutton命令 投稿者:hiroki 投稿日:06/06/05(月) 11:20
僕もこれで悩んだ事があります。
このようなアルゴリズムの解決策はgotoのみで組むこと。
ちなみに、HSP2.6ではうまくいくそうです。
[5525] Re^4: サブルーチン内のbutton命令 投稿者:hiroki 投稿日:06/06/05(月) 11:59
下記のようにすると、うまくいきました。
*main
gosub *sub1
mes "かえってきました"
stop
*sub1
t=0
button gosub "OK?" , *ret
repeat
if t=1 : break
await
loop
t=0
return
*ret
t=1
return
tona改さん、*サブ1と*サブ1は違うラベル名ですよ。
[5526] Re^5: サブルーチン内のbutton命令 投稿者:tona改 投稿日:06/06/05(月) 12:41
皆さんありがとうございます。
またイロイロ試してみます。
>tona改さん、*サブ1と*サブ1は違うラベル名ですよ。
送信した後で気付きました。ごめんなさい。
[5513] Re: サブルーチン内のbutton命令 投稿者:sin 投稿日:06/06/04(日) 17:44
そうですね、
button命令を普通に書くとgoto と同じ扱いになるのでreturn命令時にエラーが出ます。
returnでもとの行に戻したい場合は
button gosub "文字",*lavel
と表記してください。
というかHELPにそう書いています。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
あと、わかっているとは思いますが
ラベル名で日本語の使用は避けたほうがいいです。
[5500] ダブルコーテーション 投稿者:kazu 投稿日:06/06/03(土) 01:23
はじめまして。
「dialog "exe",16,」で得たぱすを、
ダブルコーテーションで囲んでクリップボードにコピーしたいのですが、うまくいきません。
このダブルコーテーションを、文字列として扱う方法はありますか??
素人考えでは
"""+"C:\Program Files\aaa\aaa.exe"+"""
これでうまくいくかな?と思っていたのですが、ちがうようです。
知恵を貸してください。
[5502] Re: ダブルコーテーション 投稿者:sin 投稿日:06/06/03(土) 02:23
はじめましてー。
早速ですが、
ダブルコーテーションの表示の仕方は \" です。
dialog命令で取得したパスにつける場合は、"\""+refstr+"\"" でOKです。
[5503] Re^2: ダブルコーテーション 投稿者:kazu 投稿日:06/06/03(土) 08:22
おはようございます!
朝起きたら答えが書かれていて感動しました。
これで目的が果たせそうです。
パスをクリップボードにコピーするだけの小さなツールですが、
初めて作るツールで、試行錯誤しながらやっています。
チョット気になったのですが、付属のエディタで白と黄色の色分けがおかしくなりますね。
「"\""+refstr+"\""」の最後の¥だけ白くなります。
[5504] Re^3: ダブルコーテーション 投稿者:hest 投稿日:06/06/03(土) 09:11
> チョット気になったのですが、付属のエディタで白と黄色の色分けがおかしくなりますね。
> 「"\""+refstr+"\""」の最後の¥だけ白くなります。
仕様ですね。これはエディタが分かりやすく色分けしてるだけですが、
\"を使うとそれが上手く機能しないようです。
実行したとき、動作に支障をきたさないようなら、
気にすることはないようです。
(同様の理由で、私も自作プログラム中で色分けが不正確な箇所があるので)
[5516] Re^4: ダブルコーテーション 投稿者:Irisawa 投稿日:06/06/04(日) 19:24
> 仕様ですね。これはエディタが分かりやすく色分けしてるだけですが、
> \"を使うとそれが上手く機能しないようです。
仕様というか不具合です。
HSP-Dev MLでは一度修正されたバージョンが公開されましたが
その後、また戻ってしまいました。
結構、難しいみたいです。
エスケープ文字についてはプログラミング・マニュアルの文字列の
章に書かれています。
そのままでは文字列リテラル中に埋め込めない文字を埋め込むには
このエスケープ文字を使用するか
mes strf("%c", 0x22)
のようにstrf関数を%cで書式化してください。
(NULL文字は現時点のHSPではこの方法しかありません)
変数に書き込む場合はpokeとかmemsetやmemcpyなどもありますが。
(メモリ操作・文字列関連の命令や関数などは多数あります)
[5506] Re^4: ダブルコーテーション 投稿者:kazu 投稿日:06/06/03(土) 12:49
なるほど。
色分けがあるとわかりやすいのですが、\"に関しては気にしないようにします。
ダブルコーテーションで囲んでパスをクリップボードに送ることができました。
ありがとうございました。
[5440] (削除) 投稿者:(削除) 投稿日:06/05/28(日) 12:35
(削除されました)
[5456] Re: アイコンの変更 投稿者:Kpan 投稿日:06/05/30(火) 20:00 <URL>
>リソースハッカーなどを使わずに
できるかできないかと言われれば、不可能ではないかと。
スクリプトをコンパイルして実行ファイルを生成しアイコンを変更
する、という一連の作業を行ってくれるプログラムを組めば。(^^;
[5448] Re: アイコンの変更 投稿者:sin 投稿日:06/05/29(月) 22:51
> リソースハッカー
ぐぐって見ましたが
リソースハッカーがいまいちどんなものかわかりませんでしたorz
ソースを直接書き換えるソフトなんですかね?
というわけであまり参考にならない回答かもしれませんが
ttp://hp.vector.co.jp/authors/VA034695/
こちら様のHSP Runtime Editorはいかがでしょうか?
(HSP3用としてhrted-2.5.0.0.zipが存在するが
hrted201.zipの方も利用でき、なおかつ使いやすい。
ただし、マニフェストファイルは指定しなければならない)
アイコンだけではなくプロパティ画面にてバージョン情報タブの追加がで
きます。
そして作成したhsprtファイルの名前を変更
(はじめからHSPに付属しているhsprtを上書きして消してしまわないよう
に)して、
スクリプトに #packopt runtime "変更したファイル名" と書き込んでお
けば
あとは実行ファイルにコンパイルするだけでアイコンが変わります。
[5455] Re^2: アイコンの変更 投稿者:Irisawa 投稿日:06/05/30(火) 12:19
> ぐぐって見ましたが
> リソースハッカーがいまいちどんなものかわかりませんでしたorz
> ソースを直接書き換えるソフトなんですかね?
Resource Hackerは実行バイナリファイル(EXE/DLL及びその他の実行
モジュール)のリソースデータを書き換えるというか置き換える
ソフトです。
http://www.angusj.com/resourcehacker/
よく、外国語(主に英語)ソフトを日本語化する際に使用されます。
(言語リソースがリソースデータとして含まれている場合のみ)
Resource Hackerの日本語版自体Resource Hackerで日本語化された
ものです。
実行モジュール内の.rdataセクションを操作できるソフトの一種で
リソースデータの置き換え、追加、削除とエクスポートが可能です。
ただし、UPXなどのリソースデータを圧縮するソフトを使用していると
利用できません。
HSPでは少し特殊なのでアイコンを複数入れたりすると強制終了したり
うまく動作しなくなることがあります。
[5501] Re^3: アイコンの変更 投稿者:sin 投稿日:06/06/03(土) 02:16
> Resource Hackerは実行バイナリファイル(EXE/DLL及びその他の実行
> モジュール)のリソースデータを書き換えるというか置き換える
> ソフトです。
>
> http://www.angusj.com/resourcehacker/
>
> よく、外国語(主に英語)ソフトを日本語化する際に使用されます。
なるほど、そういうソフトでしたか。
使いこなせると便利そうですねー。
わざわざご説明ありがとうございますm(_ _)m
[5449] 追伸 投稿者:sin 投稿日:06/05/29(月) 23:00
>HSP3用としてhrted-2.5.0.0.zipが存在する
と言いましたが、どうやらランタイム形式での出力には対応していないようです。
なので、実際に書き換えるにはhrted201.zipの方しか使えないと思います。
[5482] HSPでwinsockを使用の場合 投稿者:スリーエス 投稿日:06/06/01(木) 16:55
こんにちは。
HSPでAPIのwinsockを使用する場合、wsock32.dllを#uselibで
読み込んだ後、WSADATA等の定義情報は自分で作成するしかないのでしょうか?
C++ならwinsock2.h に該当するものはないのでしょうか。
hspsockは使わずにwinsockの使い方を学びたいのですが、
参考資料はC++用のものが多いので、上記定義ファイルがあれば便利と思いまして。
[5493] Re: HSPでwinsockを使用の場合 投稿者:スリーエス 投稿日:06/06/02(金) 10:21
レスありがとうございました。
定数定義をサーチするツールがとても便利でした。
構造体についてはやはり配列を駆使するしかないようですね。
[5484] Re: HSPでwinsockを使用の場合 投稿者:さくら 投稿日:06/06/01(木) 21:14
> こんにちは。
> HSPでAPIのwinsockを使用する場合、wsock32.dllを#uselibで
> 読み込んだ後、WSADATA等の定義情報は自分で作成するしかないのでしょうか?
これのこと?ちょっと長いけど貼り付けときます。
;(wsock32.as)
#ifdef __hsp30__
#ifndef __WSOCK32__
#define __WSOCK32__
#uselib "WSOCK32.DLL"
#func global AcceptEx "AcceptEx" sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr
#define global EnumProtocols EnumProtocolsA
#func global EnumProtocolsA "EnumProtocolsA" sptr,sptr,sptr
#func global EnumProtocolsW "EnumProtocolsW" sptr,sptr,sptr
#func global GETXBYYSP_WSAAsyncGetHostByAddr "GETXBYYSP_WSAAsyncGetHostByAddr" sptr,sptr,sptr,sptr,sptr,sptr,sptr
#func global GETXBYYSP_WSAAsyncGetHostByName "GETXBYYSP_WSAAsyncGetHostByName" sptr,sptr,sptr,sptr,sptr
#func global GETXBYYSP_WSAAsyncGetProtoByName "GETXBYYSP_WSAAsyncGetProtoByName" sptr,sptr,sptr,sptr,sptr
#func global GETXBYYSP_WSAAsyncGetProtoByNumber "GETXBYYSP_WSAAsyncGetProtoByNumber" sptr,sptr,sptr,sptr,sptr
#func global GETXBYYSP_WSAAsyncGetServByName "GETXBYYSP_WSAAsyncGetServByName" sptr,sptr,sptr,sptr,sptr,sptr
#func global GETXBYYSP_WSAAsyncGetServByPort "GETXBYYSP_WSAAsyncGetServByPort" sptr,sptr,sptr,sptr,sptr,sptr
#func global GETXBYYSP_WSACancelAsyncRequest "GETXBYYSP_WSACancelAsyncRequest" sptr
#func global GETXBYYSP_gethostbyaddr "GETXBYYSP_gethostbyaddr" sptr,sptr,sptr
#func global GETXBYYSP_gethostbyname "GETXBYYSP_gethostbyname" sptr
#func global GETXBYYSP_gethostname "GETXBYYSP_gethostname" sptr,sptr
#func global GETXBYYSP_getprotobyname "GETXBYYSP_getprotobyname" sptr
#func global GETXBYYSP_getprotobynumber "GETXBYYSP_getprotobynumber" sptr
#func global GETXBYYSP_getservbyname "GETXBYYSP_getservbyname" sptr,sptr
#func global GETXBYYSP_getservbyport "GETXBYYSP_getservbyport" sptr,sptr
#func global GetAcceptExSockaddrs "GetAcceptExSockaddrs" sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr
#define global GetAddressByName GetAddressByNameA
#func global GetAddressByNameA "GetAddressByNameA" sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr
#func global GetAddressByNameW "GetAddressByNameW" sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr
#define global GetNameByType GetNameByTypeA
#func global GetNameByTypeA "GetNameByTypeA" sptr,sptr,sptr
#func global GetNameByTypeW "GetNameByTypeW" sptr,sptr,sptr
#define global GetService GetServiceA
#func global GetServiceA "GetServiceA" sptr,sptr,sptr,sptr,sptr,sptr,sptr
#func global GetServiceW "GetServiceW" sptr,sptr,sptr,sptr,sptr,sptr,sptr
#define global GetTypeByName GetTypeByNameA
#func global GetTypeByNameA "GetTypeByNameA" sptr,sptr
#func global GetTypeByNameW "GetTypeByNameW" sptr,sptr
#func global MigrateWinsockConfiguration "MigrateWinsockConfiguration" sptr,sptr,sptr
#func global NPLoadNameSpaces "NPLoadNameSpaces" sptr,sptr,sptr
#func global NSPStartup "NSPStartup" sptr,sptr
#define global SetService SetServiceA
#func global SetServiceA "SetServiceA" sptr,sptr,sptr,sptr,sptr,sptr
#func global SetServiceW "SetServiceW" sptr,sptr,sptr,sptr,sptr,sptr
#func global TransmitFile "TransmitFile" sptr,sptr,sptr,sptr,sptr,sptr,sptr
#func global WSAAsyncGetHostByAddr "WSAAsyncGetHostByAddr" sptr,sptr,sptr,sptr,sptr,sptr,sptr
#func global WSAAsyncGetHostByName "WSAAsyncGetHostByName" sptr,sptr,sptr,sptr,sptr
#func global WSAAsyncGetProtoByName "WSAAsyncGetProtoByName" sptr,sptr,sptr,sptr,sptr
#func global WSAAsyncGetProtoByNumber "WSAAsyncGetProtoByNumber" sptr,sptr,sptr,sptr,sptr
#func global WSAAsyncGetServByName "WSAAsyncGetServByName" sptr,sptr,sptr,sptr,sptr,sptr
#func global WSAAsyncGetServByPort "WSAAsyncGetServByPort" sptr,sptr,sptr,sptr,sptr,sptr
#func global WSAAsyncSelect "WSAAsyncSelect" sptr,sptr,sptr,sptr
#func global WSACancelAsyncRequest "WSACancelAsyncRequest" sptr
#func global WSACancelBlockingCall "WSACancelBlockingCall"
#func global WSACleanup "WSACleanup"
#func global WSAGetLastError "WSAGetLastError"
#func global WSAIsBlocking "WSAIsBlocking"
#func global WSARecvEx "WSARecvEx" sptr,sptr,sptr,sptr
#func global WSASetBlockingHook "WSASetBlockingHook" sptr
#func global WSASetLastError "WSASetLastError" sptr
#func global WSAStartup "WSAStartup" sptr,sptr
#func global WSAUnhookBlockingHook "WSAUnhookBlockingHook"
#func global WSApSetPostRoutine "WSApSetPostRoutine" sptr
#func global WSCRegisterWS2 "WSCRegisterWS2" sptr,sptr
#func global __WSAFDIsSet "__WSAFDIsSet" sptr,sptr
#func global accept "accept" sptr,sptr,sptr
#func global bind "bind" sptr,sptr,sptr
#func global closesocket "closesocket" sptr
#func global connect "connect" sptr,sptr,sptr
#func global dn_expand "dn_expand" sptr,sptr,sptr,sptr,sptr
#func global gethostbyaddr "gethostbyaddr" sptr,sptr,sptr
#func global gethostbyname "gethostbyname" sptr
#func global gethostname "gethostname" sptr,sptr
#func global getnetbyname "getnetbyname" sptr
#func global getpeername "getpeername" sptr,sptr,sptr
#func global getprotobyname "getprotobyname" sptr
#func global getprotobynumber "getprotobynumber" sptr
#func global getservbyname "getservbyname" sptr,sptr
#func global getservbyport "getservbyport" sptr,sptr
#func global getsockname "getsockname" sptr,sptr,sptr
#func global getsockopt "getsockopt" sptr,sptr,sptr,sptr,sptr
#func global htonl "htonl" sptr
#func global htons "htons" sptr
#func global inet_addr "inet_addr" sptr
#func global inet_network "inet_network" sptr
#func global inet_ntoa "inet_ntoa" sptr
#func global ioctlsocket "ioctlsocket" sptr,sptr,sptr
#func global listen "listen" sptr,sptr
#func global ntohl "ntohl" sptr
#func global ntohs "ntohs" sptr
#func global rcmd "rcmd" sptr,sptr,sptr,sptr,sptr,sptr
#func global recv "recv" sptr,sptr,sptr,sptr
#func global recvfrom "recvfrom" sptr,sptr,sptr,sptr,sptr,sptr
#func global rexec "rexec" sptr,sptr,sptr,sptr,sptr,sptr
#func global rresvport "rresvport" sptr
#func global s_perror "s_perror" sptr,sptr
#func global select "select" sptr,sptr,sptr,sptr,sptr
#func global send "send" sptr,sptr,sptr,sptr
#func global sendto "sendto" sptr,sptr,sptr,sptr,sptr,sptr
#func global sethostname "sethostname" sptr,sptr
#func global setsockopt "setsockopt" sptr,sptr,sptr,sptr,sptr
#func global shutdown "shutdown" sptr,sptr
#func global socket "socket" sptr,sptr,sptr
#endif
#endif
[5486] Re^2: HSPでwinsockを使用の場合 投稿者:kz3 投稿日:06/06/01(木) 22:07 <URL>
>さくらさん
多分、定数定義のことだと思いますー( ました )
> スリーエスさん
platform SDKを入手してヘッダを覗くか、「HSP Win32 定数 定義」などで調べる...
一番いいのは前者の方ですー
[5491] Re^3: HSPでwinsockを使用の場合 投稿者:くまった 投稿日:06/06/02(金) 01:37
> platform SDKを入手してヘッダを覗くか、「HSP Win32 定数 定義」などで調べる...
> 一番いいのは前者の方ですー
便乗質問すみません。
定数定義を検索するツールというのがあったんですが誰かご存じないですか。
HDDが壊れてなくしちゃったんですが、検索しても見つからないんです。
[5492] Re^4: HSPでwinsockを使用の場合 投稿者:Steep 投稿日:06/06/02(金) 07:44
> 定数定義を検索するツールというのがあったんですが誰かご存じないですか。
blueleafさんのsearch.exeかな。
http://hp.vector.co.jp/authors/VA034288/
[5495] Re^5: HSPでwinsockを使用の場合 投稿者:くまった 投稿日:06/06/02(金) 23:14
> > 定数定義を検索するツールというのがあったんですが誰かご存じないですか。
>
> blueleafさんのsearch.exeかな。
> http://hp.vector.co.jp/authors/VA034288/
はい、これです!
どうもありがとうございました。
[5483] Re: HSPでwinsockを使用の場合 投稿者:ぜろ 投稿日:06/06/01(木) 18:32
> こんにちは。
> HSPでAPIのwinsockを使用する場合、wsock32.dllを#uselibで
> 読み込んだ後、WSADATA等の定義情報は自分で作成するしかないのでしょうか?
> C++ならwinsock2.h に該当するものはないのでしょうか。
> hspsockは使わずにwinsockの使い方を学びたいのですが、
> 参考資料はC++用のものが多いので、上記定義ファイルがあれば便利と思いまして。
どなたかが公開している可能性はありますが、HSP自体にはwinsock用のものは残念ながら付属していません。
ただ定数でしたらCの記述(#define XXX 001など)がHSPでもそのまま使用できるので
winsock2.hなどから流用することはできるかと思います。
構造体についてはそもそもHSPに構造体の概念が無いので
自前で配列変数などで代用するしかないですが。
[5474] さくらさんの拡張プラグインのリッチエディダでのサンプルの誤作動 投稿者:じゅーりす 投稿日:06/05/31(水) 21:47
さくらさんの拡張プラグインのリッチエディダでのサンプルの誤作動解消です。
sample32.hsp
の部分の置換で、全置換がうまく作動せず
困っています。
解決法はありますか?
ご教示願います
[5476] Re: さくらさんの拡張プラグインのリッチエディダでのサンプルの誤作動 投稿者:GENKI 投稿日:06/05/31(水) 22:23
> さくらさんの拡張プラグインのリッチエディダでのサンプルの誤作動解消です。
> sample32.hsp
> の部分の置換で、全置換がうまく作動せず
> 困っています。
> 解決法はありますか?
> ご教示願います
回答じゃなくて申し訳ない。
じゅーりすさんはマルチポストってご存知でしょうか?
ご存じなければかきサイトを参考にしてください。
http://e-words.jp/w/E3839EE383ABE38381E3839DE382B9E38388.html
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88
http://www.google.co.jp/search?q=%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88&start=0&hl=ja&lr=lang_ja&ie=utf-8&oe=utf-8&client=firefox&rls=org.mozilla:ja:official
掲示板では1日や2日で回答が返って来るのを期待してはいけません。
質問がよくある質問や簡単なものでないならなおのことです。
回答を知ってる人が毎日見に来るわけじゃありませんから。(週1や月1でしか訪れないかも…。)
自分でも解決策を探りながら、もう少しのんびり待ったほうがいいと思います。
> sample32.hsp
> の部分の置換で、全置換がうまく作動せず
> 困っています。
> 解決法はありますか?
↑この質問の仕方ではちょっと回答えにくいかも…。
↓ここの「分からないことを調べるには?」の3項目目あたりを参考にしてみてはどうでしょうか。
http://quasiquote.org/hspwiki/%bd%e9%bf%b4%bc%d4%b8%fe%a4%b1%a5%a2%a5%c9%a5%d0%a5%a4%a5%b9#H-1d4b800
[5485] Re^2: さくらさんの拡張プラグインのリッチエディダでのサンプルの誤作動 投稿者:さくら 投稿日:06/06/01(木) 21:17
> > さくらさんの拡張プラグインのリッチエディダでのサンプルの誤作動解消です。
> > sample32.hsp
> > の部分の置換で、全置換がうまく作動せず
> > 困っています。
> > 解決法はありますか?
> > ご教示願います
>
> 回答じゃなくて申し訳ない。
>
> じゅーりすさんはマルチポストってご存知でしょうか?
> ご存じなければかきサイトを参考にしてください。
GENKIさん、マナーを指導して頂いて、ありがとうございます(^^;
わたしも、普段は仕事しているので、そんなに暇じゃないし、毎日、掲示板
を見ていないし・・・・
じゅーりすさん>
いろんなところに書かないで下さいね。気持ちはわかるけど・・・
答えじゃないけど、わたしの掲示板に返信を書いときました。
[5470] STGのショットについて 投稿者:akira 投稿日:06/05/31(水) 19:17
今STGを作っているんですが、ショットを単発から連射にしたいんです。
現在のソースは
foreach tf :c=cnt
if tf(c)=0 { ;
if ky&16 { mmplay 0 ; 自機弾の発射セット
tx(c)=px+8 :ty(c)=py-16 ;
tf(c)=1 :ky=0 ;
} ;
} else :ty(c)-=16 :if ty(c)<0 :tf(c)=0 ; 自機弾を進める
if tf(c)=1 :gosub *hitchk ; 発射中の自機弾チェック
loop
です。
どこを変えればいいでしょうか・・・。
教えていただける方いらっしゃいませんか?
[5473] Re: STGのショットについて 投稿者:K 投稿日:06/05/31(水) 21:43
サンプルの中に問題はありません
サンプルを掲載する場合は、最低限問題が起こる事が
確認できるように、お願いします。
dim tf,20
dim tx,20
dim ty,20
repeat
px=mousex
py=mousey
stick ky,$ff
color 0,50,50:boxf 0,0,640,480
color 200,200,00
foreach tf :c=cnt
if tf(c)=0 { ;
if ky&16 { mmplay 0 ; 自機弾の発射セット
tx(c)=px+8 :ty(c)=py-16 ;
tf(c)=1 :ky=0 ;
} ;
} else :ty(c)-=16 :if ty(c)<0 :tf(c)=0 : ; 自機弾を進める
if tf(c)=1 :gosub *hitchk
loop
await 10
loop
*hitchk
pos tx(c),ty(c):mes "↑"
return
stick 命令の非トリガタイプの設定か tfの要素が1個しかないか
*hitchk内で何かしてるかぐらいしか想像出来ません。
[5471] Re: STGのショットについて 投稿者:かきしす 投稿日:06/05/31(水) 21:37
まず、キー読み部分ですが、多分stick命令を使っていると思いますので、
stick命令のヘルプを参考にして、スペースキーも非トリガータイプに設定してください。
その結果、スペースキーも『押しっぱなし』が有効になりますが、
それだけでは押した瞬間に最大数の弾が一まとめに出ちゃうので、
1発出したら、少し間隔を空けるようにしなくてはなりません。
発射無効用変数を1つ用意し、(例えば『tn』)
ステージスタート部分で tn=0 で初期化しておきます。
『if ky&16 { mmplay 0』 の部分を 『if (ky&16=16)and(tn=0) { mmplay 0』 に変更。
これにより、tnが0より大きい時は弾が出なくなります。
次に『tf(c)=1 :ky=0』の後に
『:tn=2』(2は次の弾が出るまでの間隔。)を追加。
これにより1発撃つと、tnが0以外になり、次の弾が出なくなる。
メインループの最後に『tn=tn-(tn>0)』を入れる。
これにより、tnが0より大きいときはtnが減算される。
まとめると
●キー読み部分でスペースキーを非トリガータイプにする。
●キーを押してても、tnが0の時しか弾が出ないようにする。
●弾を発生させたときにtnに値を入れる。
●メインループの最後でtnを減算する。(最低値0)
●tnが0になった時、スペースキーが押されていれば次の弾が出る。
・・・検証してませんが、こんな感じの流れで上手く良くと思います。
[5475] Re^2: STGのショットについて 投稿者:かきしす 投稿日:06/05/31(水) 22:13
Kさんが、ちゃんと得検証した上で答えてくれてましたね。
それによると、公開されたサンプルでもちゃんと連射できていたようで・・・
問題はSTICK命令の部分っぽいですね。
一応、僕のやり方を組み込むと、弾の間隔を調整できます。
ただ、tn=2だと、狭すぎましたね。
Kさんのサンプルで試したら、tn=6くらいが良いかな。
あと、『if (ky&16=16)and(tn=0) { mmplay 0』だとダメでした。
『if ((ky&16)=16)and(tn=0) { mmplay 0』が正解です。
失礼しました。
やっぱりちゃんと検証してから答えなきゃだめだなぁ・・・反省。
[5477] Re^3: STGのショットについて 投稿者:akira 投稿日:06/05/31(水) 22:45
Kさん、かきしすさん、返答ありがとうございまいた!
どうやらstickに問題があったようで・・・
無事に連射設定できました(^−^)
ありがとうございます!
[5422] アイリスイン・アウト 投稿者:saimon 投稿日:06/05/25(木) 16:20
アニメなどで見る画面が円形に消えていったり
次の画面に切り替わったりする
アイリスイン・アイリスアウト
というのをやりたいのですがさっぱりわかりません・・・。
トランジションのようにグラデーションがかかって
だんだん切り替わるので無く
スパッと切り替えたいのです。どうしたら良いのでしょう。
[5430] Re: アイリスイン・アウト 投稿者:naznyark 投稿日:06/05/27(土) 02:52
やりようはいろいろ。
非矩形コピーの一例の応用。
screen 0, 640, 480, 0
buffer 1, 640, 480, 0; 画像 1
color 0, 0, 255 : boxf
color 255, 255, 0 : font msgothic, 18
repeat 384 : pos cnt\16*40, cnt/16*20 : mes strf("%c", 'A'+cnt\26) : loop
buffer 2, 640, 480, 0; 画像 2
color 255, 0, 255 : boxf
color 0, 255, 0 : font msgothic, 18
repeat 384 : pos cnt\16*40, cnt/16*20 : mes cnt : loop
buffer 3, 640, 480, 0; 作業用バッファ
gsel 0 : gmode 0 : pos 0, 0 : gcopy 1, 0, 0, 640, 480
s=10
repeat 400/s
gsel 0 : redraw 0
i=(cnt+1)*s
;i=400/s*s-(cnt+1)*s
x=320-i : y=240-i
gsel 3 : gmode 0 : pos x-s, y-s : gcopy 1, x-s, y-s, (i+s)*2, (i+s)*2
gsel 0 : gmode 0 : pos x, y : gcopy 2, x, y, i*2, i*2
gsel 3 : color 0, 0, 0 : circle x, y, 320+i, 240+i
gsel 0 : gmode 2 : pos x-s, y-s : gcopy 3, x-s, y-s, (i+s)*2, (i+s)*2
gsel 0 : redraw 1
await 33
loop
[5426] Re: アイリスイン・アウト 投稿者:hiroki 投稿日:06/05/26(金) 14:02
アイリスイン・アウトについて、実際に作成したところうまくいきました。
面倒なのは、どうやって真ん中に円(楕円)を描くかでした。
それさえクリア出来れば簡単でした。
駄作なので、あんまり見せたくはないんだけど、せっかく作ったので...。
アルゴリズムはスクリプトを見て、考えてみてください。
wx=640 : wy=480
screen 0,wx,wy ; メイン画面
buffer 1,wx,wy ; 元画像
buffer 2,wx,wy ; 上書きする画面
color 0,255,0
boxf
gsel 0
color 255,0,0
boxf
if wx<=wy {
csz=wy/wx
ct=int(wx/2)
xb=1
yb=csz
} else {
csz=wx/wy
ct=int(wy/2)
xb=csz
yb=1
}
gmode 2
repeat
redraw 0
gsel 1
gcopy 2,0,0,wx,wy
color 0,0,0
circle cnt*xb,cnt*yb,(wx-cnt)*xb,(wy-cnt)*yb,1
gsel 0
gcopy 1,0,0,wx,wy
redraw 1
if ct<cnt : break
await
loop
gcopy 2,0,0,wx,wy ; ゴミが残るための対策
[5423] Re: アイリスイン・アウト 投稿者:かきしす 投稿日:06/05/25(木) 18:47
> アニメなどで見る画面が円形に消えていったり
> 次の画面に切り替わったりする
> アイリスイン・アイリスアウト
> というのをやりたいのですがさっぱりわかりません・・・。
色々やり方はあるかと思いますが、
メインのスクリーンの他にバッファを2枚用意して…
【1】バッファ1には、くりぬきたい映像を入れる。
(アイリスアウト直前のメインスクリーンをコピーしておく等)
【2】バッファ2は、地色を好きな色(真っ黒以外)で塗り、
その中に 真っ黒(RGB=0,0,0)の円を描く。
【3】メインスクリーンにバッファ1の画像をgmode 0で通常コピー。
【4】メインスクリーンにバッファ2の画像をgmode 2で透明色付きコピー
円形の、RGB=0,0,0のところのみ抜ける。
その外側はバッファ2の地色になる。
【5】awaitを入れて、ユーザーに見せる。
【6】バッファ2の黒い円を少し小さく(アウトの場合)描き直す。
【7】3に戻る。(アウトの時は4に戻っても良い。)
…という感じで出来ると思います。
[5431] Re^2: アイリスイン・アウト 投稿者:かきしす 投稿日:06/05/27(土) 10:22
すみません。ブームに便乗して僕も作ってみました。
指定した座標に向かって円が収束するように組んでみました。
wx=640 : wy=480
screen 0,wx,wy ; メイン画面
buffer 1,wx,wy ; 元画像用バッファ
picload "test01.jpeg";何か画像を読み込んでみよう!
buffer 2,wx,wy ; 円作成用バッファ
stx=wx/2:sty=wy/2; 画面の中心
cw_max=1.0*wx*1.4/2
if (wy > wx) :cw_max=1.0*wy*1.4/2; 最大半径
*main
cntmax=120; 演出時間
tgx=rnd(wx):tgy=rnd(wy); 目標座標
repeat cntmax; アイリスアウト
cnt_A=cnt : cnt_B=cntmax-cnt
gosub *clip
loop
wait 80
cntmax=60
repeat cntmax; アイリスイン
cnt_B=cnt : cnt_A=cntmax-cnt
gosub *clip
loop
wait 100
goto *main
;------------------------------------------------------------
*clip
redraw 0
cx=(stx*cnt_B+tgx*cnt_A)/cntmax:cy=(sty*cnt_B+tgy*cnt_A)/cntmax
cw=1.0*cw_max*cnt_B/cntmax
gsel 0:gmode 0:gcopy 1,0,0,wx,wy; まずは画像を描いて
gsel 2:color 0,0,50:boxf 0,0,wx,wy
color 0,0,0
if cnt_B > 1:circle cx-cw,cy-cw,cx+cw,cy+cw,1; バッファに黒の円を描く
gsel 0:gmode 2:gcopy 2,0,0,wx,wy; 黒を透明扱いで、画像の上にコピー
redraw 1
await 10
return
[5433] Re^3: アイリスイン・アウト( 外接円? ) 投稿者:kz3 投稿日:06/05/27(土) 16:27 <URL>
左上角と右下角から中心に向かって伸び縮みするものを作ろうと思ってやってみましたが、
任意の四角形に内接する円は楕円になって、
外接する円は円になってしまうのかな。。。
なんかいろいろ計算してみたけど、無駄が多そう。
画像処理の得意そうな、かきしすさんにレス付けてみよう...^^;
rad = 3.1415926535/180
buffer 2: picload dir_exe+"/sample/demo/sky_bg.jpg"
gx = 1.*ginfo_winx: gy = 1.*ginfo_winy
buffer 3, gx, gy
screen 0, gx, gy
hr = sqrt( gx*gx+gy*gy )/2
_sin = gy/2/hr
_cos = gx/2/hr
*main
repeat 7,1
ap = cnt
repeat 360, 90
await 5
nrx = (hr*hr)/(gx/2)
nry = (hr*hr)/(gy/2)
trx = sin(rad*cnt)*nrx
try = sin(rad*cnt)*nry
dx = trx*_cos
dy = try*_sin
gsel 3
color 255,255,255: boxf: color 0
circle gx/2 - dx, gy/2 - dy, gx/2 + dx, gy/2 + dy
gsel 0
redraw 0
gmode 0, gx, gy
gcopy 2, 0, 0
gmode 6, gx, gy, 32*ap
gcopy 3, 0, 0
redraw 1
loop
loop
goto *main
[5454] [参考]Re^4: アイリスイン・アウト( 外接円? ) 投稿者:naznyark 投稿日:06/05/30(火) 02:54
> 任意の四角形に内接する円は楕円になって、
> 外接する円は円になってしまうのかな。。。
もはや元質問とは関係ないけれど、矩形に外接する楕円。
dim rect, 4
rect=300, 220, 339, 259
rr=1.0/3.0; 外接円の縦横比(縦径/横径)
sx=rect(2)-rect(0)+1
sy=rect(3)-rect(1)+1
cx=double(rect(0)+rect(2))/2
cy=double(rect(1)+rect(3))/2
rx=sqrt( double(sx*sx)/4+double(sy*sy)/4/rr/rr )
ry=rx*rr
color 0, 255, 0
circle cx-rx+0.5, cy-ry+0.5, cx+rx+1.5, cy+ry+1.5, 1
color 0, 0, 255
circle cx-rx+0.5, cy-ry+0.5, cx+rx+1.5, cy+ry+1.5, 0
color 255, 0, 0
boxf rect(0), rect(1), rect(2), rect(3)
[5434] Re^4: アイリスイン・アウト 投稿者:hiroki 投稿日:06/05/27(土) 17:45
だんだん高度になっていく...。(-_-;)
[5437] Re^5: アイリスイン・アウト 投稿者:kz3 投稿日:06/05/28(日) 00:04 <URL>
高度code...
[5469] Re^6: アイリスイン・アウト 投稿者:hiroki 投稿日:06/05/31(水) 18:23
数日間不在だったので、久しぶりに拝見しましたが、
結局質問者は出てこなかったのね。
まぁ、楽しんだから別にいいけどね。
[5425] Re^2: アイリスイン・アウト 投稿者:hiroki 投稿日:06/05/26(金) 10:32
> 【6】バッファ2の黒い円を少し小さく(アウトの場合)描き直す。
実際に作ってみてるけど、circle命令でど真ん中に円を描くのは
すごい計算量ですね。^^;
「真ん中の座標を指定し、半径を指定すれば円を描く」という
APIがあればね。
[5429] Re^3: アイリスイン・アウト 投稿者:GENKI 投稿日:06/05/27(土) 01:30
> 実際に作ってみてるけど、circle命令でど真ん中に円を描くのは
> すごい計算量ですね。^^;
> 「真ん中の座標を指定し、半径を指定すれば円を描く」という
> APIがあればね。
ということなので、APIを使う練習を兼ねて書いてみました。あんまり意味内容な気が…。
----------
;APIで円を描く
#uselib "Gdi32.dll"
#func Ellipse "Ellipse" int,int,int,int,int
#func CreateEllipticRgn "CreateEllipticRgn" int,int,int,int
#func InvertRgn "InvertRgn" int,int
#func FillRgn "FillRgn" int,int,int
#func CreateHatchBrush "CreateHatchBrush" int,int
cntrx = 100: cntry = 100;中心座標
r = 50;半径
CreateEllipticRgn cntrx-r, cntry-r, cntrx+r, cntry+r
rgn = stat
CreateHatchBrush 5, 0x0000ff
brs = stat
;InvertRgn hdc, rgn
FillRgn hdc, rgn, brs
cntrx = 200: cntry = 150;中心座標
r = 100;半径
Ellipse hdc, cntrx-r, cntry-r, cntrx+r, cntry+r
redraw 1
cntrx = ginfo_winx/2: cntry = ginfo_winy/2;中心座標
r = 30;半径
circle cntrx-r, cntry-r, cntrx+r, cntry+r, 0
stop
----------
circle命令って便利ですね。
[5428] Re^3: アイリスイン・アウト 投稿者:秋房 投稿日:06/05/27(土) 01:10
/*必要ないと思いますが暇なので(参考までに)。*/
#include "gdi32.as"
#module
#deffunc ArcPie int p1,int p2,int p3,int p4,int p5,int p6,int p7,local p8,local p9
dim Pn,6
p8 = p4
p9 = 3.14159265358979323846/180
if p8 = 0 {p8 = p3}
Pn(0) = (Cos(double( 0)*p9)*p3)
Pn(1) = (Cos(double( 0)*p9)*p8)
Pn(2) = (Cos(double(p7+270)*p9)*p3)
Pn(3) = (Sin(double(p7+270)*p9)*p8)
Pn(4) = (Cos(double(p6+270)*p9)*p3)
Pn(5) = (Sin(double(p6+270)*p9)*p8)
if p5 {Pie hdc,p1+Pn(0),p2+Pn(1),p1-Pn(0),p2-Pn(1),p1+Pn(2),p2+Pn(3),p1+Pn(4),p2+Pn(5)}
else {Arc hdc,p1+Pn(0),p2+Pn(1),p1-Pn(0),p2-Pn(1),p1+Pn(2),p2+Pn(3),p1+Pn(4),p2+Pn(5)}
return
#global
color ,255 :boxf :color 0
ArcPie 100,100,50
ArcPie 220,100,50,30
ArcPie 300,100,50,30,,0,180
ArcPie 400,100,50,30,1,0,180
;ExtFloodFill hdc,100,100,$00ff00,1
redraw
[5436] Re^4: アイリスイン・アウト 投稿者:秋房 投稿日:06/05/27(土) 22:05
/*少し遊んで見ました。[記事修正.1]*/
#include "gdi32.as"
#module
#deffunc ArcPie int p1,int p2,int p3,int p4,int p5,int p6,int p7,local p8,local p9
dim Pn,6
dim Ho,2
p8 = p4
p9 = 3.14159265358979323846/180
if p8 = 0 {p8 = p3}
Pn(0) = (Cos(double( 0)*p9)*p3)
Pn(1) = (Cos(double( 0)*p9)*p8)
Pn(2) = (Cos(double(p7+270)*p9)*p3)
Pn(3) = (Sin(double(p7+270)*p9)*p8)
Pn(4) = (Cos(double(p6+270)*p9)*p3)
Pn(5) = (Sin(double(p6+270)*p9)*p8)
p9 = (ginfo(18) << 16)+(ginfo(17) << 8)+ginfo(16)
CreatePen 0,0,p9 :Ho(0) = stat :SelectObject hdc,Ho(0)
CreateSolidBrush p9 :Ho(1) = stat :SelectObject hdc,Ho(1)
if p5 {Pie hdc,p1+Pn(0),p2+Pn(1),p1-Pn(0),p2-Pn(1),p1+Pn(2),p2+Pn(3),p1+Pn(4),p2+Pn(5)}
else {Arc hdc,p1+Pn(0),p2+Pn(1),p1-Pn(0),p2-Pn(1),p1+Pn(2),p2+Pn(3),p1+Pn(4),p2+Pn(5)}
GetStockObject 0 :SelectObject hdc,stat
DeleteObject Ho(0) :DeleteObject Ho(1)
return
#global
;
buffer 1 :picload dirinfo(1)+"/sample/demo/jp6girl.bmp"
wx = ginfo(12) :wy = ginfo(13)
buffer 2 ,wx,wy
screen 0 ,wx,wy
repeat
Px=rnd(wx):Py=rnd(wy)
repeat 800
ii=cnt : jj=800-cnt :gosub *Draw :await
loop
wait 100
loop
*Draw
redraw 2
gsel 0 :gmode 0,wx,wy :gcopy 1
gsel 2 :color 0,0,1 :boxf
color 0,0,0 :ArcPie Px,Py,ii-jj,400-(jj/2),1
gsel 0 :gmode 2,wx,wy :gcopy 2
redraw 1
return
[5427] Re^3: アイリスイン・アウト 投稿者:osakana 投稿日:06/05/26(金) 21:43
APIじゃ無いけどモジュールにすると若干やりやすいかも
適当ですが0〜1000で表示する割合を
指定するようにしてみました。
#module
#deffunc maru int x,int y,int sizex,int sizey,int mode,int per
if per<=0 :per_=0 :stt=1 :else :per_=per :stt=0
sizex_=0.001*sizex*per_
sizey_=0.001*sizey*per_
circle x-sizex_,y-sizey_,x+sizex_,y+sizey_,mode
return stt
#global
x=ginfo_winx/2
y=ginfo_winy/2
sizex=320
sizey=240
a=8
percent=0
buffer 1,640,480
repeat 255
color 255-cnt,255-cnt,cnt :boxf 0,cnt*2,640,cnt*2+2
loop
buffer 2,640,480
gsel 0
repeat
redraw 0
gmode 0
pos 0,0:gcopy 1,0,0,640,480
gsel 2
color 255,255,255:boxf
color 0,0,0
maru x,y,sizex,sizey,1,1000-percent
stt=stat
percent+=a
gsel 0:gmode 2
pos 0,0:gcopy 2,0,0,640,480
if stat:gsel 0 :redraw 1:break
await 16
redraw 1
loop
dialog "おわり。"