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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0609
ぽこみち真空波動研 sinku.dll7解決


ぽこみち

リンク

2008/6/9(Mon) 23:22:23|NO.16628

ttp://kurohane.net/seisanbutu.phtml
にある真空波動研のDLLはHSPで使えますか?
使い方とスクリプトがあれば教えてください。
他の言語はサンプルが入っていますが、HSPは無いのでお願いします。



この記事に返信する


ぽこみち

リンク

2008/6/10(Tue) 20:05:36|NO.16637

良くわかりませんが、試しにやって見ましたが出来ませんでした。

#uselib "sinku.dll" #func GetDllVersion "GetDllVersion" int GetDllVersion a mes a



ぽこみち

リンク

2008/6/10(Tue) 20:26:55|NO.16638

なんかstatで見れた
他の関数の使い方が良くわからないので、分かる方お願いします



ANTARES

リンク

2008/6/10(Tue) 23:58:47|NO.16646


#uselib "Sinku.dll" #cfunc GetDllVersion "GetDllVersion" #func SetPath "SetPath" sptr #func GetFileFormat "GetFileFormat" sptr #func GetFileInfo "GetFileInfo" sptr #func GetFileInfoAuto "GetFileInfoAuto" sptr #func ConvertFull "ConvertFull" sptr,sptr #func ConvertOne "ConvertOne" sptr,sptr #define VA_MAX_STREAM_COUNT 10 #define EX_MAX_STREAM_COUNT 5 fileName=0 type=512 container=type+4 verror=container+32 video=verror+512 video_count=VA_MAX_STREAM_COUNT*512+verror audio=video_count+4 audio_count=VA_MAX_STREAM_COUNT*512+audio extra=audio_count+4 extra_count=VA_MAX_STREAM_COUNT*512+extra playtime=extra_count+4 size=playtime+8 sizeFileInfo=size+8 version=GetDllVersion() sdim dir,260 dir=dir_cur+"\\" SetPath varptr(dir) sdim filename,512 repeat dialog "*",16 if stat==0: end filename=refstr sdim fileInfo,sizeFileInfo fileInfo=filename pFileInfo=varptr(fileInfo) GetFileInfoAuto pFileInfo sdim buf,4096 ConvertFull pFileInfo, varptr(buf) ;"[%s]\n%s\n\n%s / DLL %06d\n" v=strf("%06d",version) vtitle="真空波動研" dialog "["+filename+"]\n"+buf+"\n\n"+vtitle+" / DLL "+v loop



ぽこみち

リンク

2008/6/11(Wed) 00:19:45|NO.16648

いやぁ恐れ入りました。
構造体をどうするか、位まで分かったのですが、とても出来そうにありませんでした。

これからじっくりスクリプトを見て研究してみたいと思います。
ANTARESさんありがとうございました。



flory

リンク

2008/6/11(Wed) 06:29:48|NO.16655

>ANTARESさん
構造体の記述が一部間違ってますね。

誤 extra_count=VA_MAX_STREAM_COUNT*512+extra
正 extra_count=EX_MAX_STREAM_COUNT*512+extra

バッファは確保できているのでエラーにはなりませんが。


それを踏まえた上で、FILE_INFO構造体から自力で情報を取り出すサンプル。

#uselib "Sinku.dll" #func SetPath "SetPath" str #func GetFileInfoAuto "GetFileInfoAuto" var #const VA_MAX_STREAM_COUNT 10 #const EX_MAX_STREAM_COUNT 5 #const filename 0 #const type filename + 512 #const container type + 4 #const verror container + 32 #const video verror + 512 #const video_count video + VA_MAX_STREAM_COUNT*512 #const audio video_count + 4 #const audio_count audio + VA_MAX_STREAM_COUNT*512 #const extra audio_count + 4 #const extra_count extra + EX_MAX_STREAM_COUNT*512 #const playtime extra_count + 4 #const size playtime + 8 #const sizeFILE_INFO size + 8 SetPath dir_cur + "\\" button gosub "読み込み", *load stop *load dialog "*",16 if stat = 0 : return dim FILE_INFO, sizeFILE_INFO/4 poke FILE_INFO, 0, refstr ; poke命令でFILE_INFO構造体にファイル名を格納 GetFileInfoAuto FILE_INFO strResult = "" strResult += "ファイル種別 : " + FILE_INFO(type/4) + "\n" getstr buf, FILE_INFO, container, , 32 strResult += "コンテナ名 : " + buf + "\n" getstr buf, FILE_INFO, verror, , 512 strResult += "エラー名 : " + buf + "\n" buf = "" repeat FILE_INFO(video_count/4) index = video + cnt*512 getstr buf2, FILE_INFO, index, , 512 ; 512バイト毎に情報が格納されている buf += "\t" + buf2 + "\n" loop strResult += "映像の詳細[" + FILE_INFO(video_count/4) + "]\n" + buf buf = "" repeat FILE_INFO(audio_count/4) index = audio + cnt*512 getstr buf2, FILE_INFO, index, , 512 buf += "\t" + buf2 + "\n" loop strResult += "音声の詳細[" + FILE_INFO(audio_count/4) + "]\n" + buf buf = "" repeat FILE_INFO(extra_count/4) index = extra + cnt*512 getstr buf2, FILE_INFO, index, , 512 buf += "\t" + buf2 + "\n" loop strResult += "付属情報[" + FILE_INFO(extra_count/4) + "]\n" + buf ; dupptr命令でFILE_INFO.3468とFILE_INFO.3469をdouble型変数に割り当て dupptr buf, varptr(FILE_INFO(playtime/4)), 8, 3 strResult += "再生時間 : " + buf + " sec\n" ; dupptr命令でFILE_INFO.3470とFILE_INFO.3471をdouble型変数に割り当て ; その後、strf関数で符号なし64bit整数に書式変換 dupptr buf, varptr(FILE_INFO(size/4)), 8, 3 strResult += "ファイルサイズ : " + strf("%I64u", buf) + " bytes\n" color 255, 255, 255 : boxf : color 0, 0, 0 pos 0, 24 mes strResult return



ぽこみち

リンク

2008/6/11(Wed) 19:56:59|NO.16662

floryさんありがとうございます。
違ったやり方で、より深く理解することが出来ました。

変数で代入するかconstで代入するか、どちらがいいんでしょうか?
defineとconstもどちらがモアベターなのか悩んでしまいます。

ところでANTARESさんの
>video_count=VA_MAX_STREAM_COUNT*512+verror
最後は+videoですよね??時間とサイズが0だったのでvideoにした所正常に表示されました。

お二方共ありがとうございました。



ANTARES

リンク

2008/6/11(Wed) 20:24:21|NO.16664

>誤 extra_count=VA_MAX_STREAM_COUNT*512+extra
>正 extra_count=EX_MAX_STREAM_COUNT*512+extra

>>video_count=VA_MAX_STREAM_COUNT*512+verror
>最後は+videoですよね??時間とサイズが0だったのでvideoにした所正常に表示されました。

 すんづれいすますたm(_ _)m



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