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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
1124
awq非同期読み込みがしたい4解決


awq

リンク

2013/11/24(Sun) 18:11:53|NO.58442

タイトルのとおりです。
picloadで画像などを読み込んでいるとそこで処理が止まるので
非同期読み込みができれば良いと思ったのですが、

DirectXを利用するなり拡張ライブラリを使うなりしないと
非同期読み込みは難しいのでしょうか?

もしHSPでは無理で、拡張ライブラリ等ならできるというのであれば
その拡張ライブラリの名前を教えてくれると幸いです。



この記事に返信する


KA

リンク

2013/11/24(Sun) 21:01:47|NO.58450

質問の場合の非同期は、別タスク(プロセスだっけ?)に相当すると思います。
早く言えば別のソフトを立ち上げて処理させ、完了の合図なりを受け取ることです。
ツール関係のソフトで、処理別に実行ファイルを用意するのは一般的な事です。

質問の答えとしては、HSPでも複数の実行ファイルを用意すれば可能。



check

リンク

2013/11/24(Sun) 23:38:38|NO.58456

>質問の場合の非同期は、別タスク(プロセスだっけ?)に相当すると思います。
えっ……
プログラムの動作が停止しないように読み込むことと、
別プロセスに仕事を投げることは意味が違ってくると思うのだが。

bload、bsaveを駆使すればファイルの非同期読み書きはできるので、
それとmemfileを組み合わせればおそらく可能だが、かなり難しいと思う。
別のスレッドを走らせるという手もあるが、HSPではできない。

拡張プラグインに頼ったほうがいいかな。
DirectXを使ってもファイルを読み込む方法は同じなので意味がない。



fortunehill

リンク

2013/11/25(Mon) 01:42:28|NO.58458

/*ご参考*/

#include "user32.as" #include "gdi32.as" #include "winmm.as" wait 30 ss = dir_tv+"hsptv.bmp" exist ss :ii = strsize :sdim dd,ii ;picload timeGetTime :tt = stat picload ss,1 timeGetTime :dialog (stat-tt) ;memfile(picload自体が重い) timeGetTime :tt = stat bload ss,dd memfile dd picload "mem:.bmp",1 timeGetTime :dialog (stat-tt) ;api timeGetTime :tt = stat LoadImageA hinstance,ss, 0,0,0,16 :hh = stat GetObjectA hh,0,0 :rr(0) = stat : dim nn,rr(0)/4 GetObjectA hh,rr(0),varptr(nn) CreateCompatibleDC hdc :rr(1) = stat SelectObject rr(1),hh BitBlt hdc,0,0,nn(1),nn(2),rr(1),0,0,$CC0020 DeleteDC rr(1) DeleteObject hh InvalidateRect hwnd,0,1 timeGetTime :dialog (stat-tt)



awq

リンク

2013/11/25(Mon) 18:44:16|NO.58462

>>KAさん
別プロセスに投げるというのはcheckさんのおっしゃるとおり
今回のとは少々違います。申し訳ありません。

>>checkさん
非同期読み込みを使うなら拡張プラグインを探すしかなさそうですか・・・

>>fortunehillさん
Bitbltの高速な読み書きを使うのは非同期ではなくともよさそうですね。
ただ私にはまだ少々難しいので理解できるようになってから取り組んでみます。


素直に拡張プラグインを探してみようと思います。
KAさん、checkさん、fortunehillさん、ありがとうございました。



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