[リストへもどる]
一括表示
タイトルE3DSaveSig2Buf と E3DSigLoadFromBuf
記事No9888
投稿日: 2011/10/26(Wed) 00:12
投稿者seasalt
新刊発売おめでとうございます。…とあいさつもそこそこですが
ちょっと分からない事があるので質問させてください。

#define INDEX_MAX 10
E3DSigLoad pathbuf, hsid1
E3DSaveSig2Buf hsid1, checkbuf, 0, sigwritesize
sdim sigbuf,sigwritesize,INDEX_MAX

上記の処理をしたという前提で、次の

Index = 0
repeat INDEX_MAX
E3DSaveSig2Buf hsid1, sigbuf.Index, sigwritesize,sigwritesize
E3DSigLoadFromBuf resdir, sigbuf.Index, sigwritesize,hsid.Index, 0, 1.0
Index++
loop

この処理と、次の

Index = 0
repeat INDEX_MAX
E3DSaveSig2Buf hsid1, sigbuf.Index,sigwritesize,sigwritesize
Index++
loop

Index = 0
repeat INDEX_MAX
E3DSigLoadFromBuf resdir,sigbuf.Index,sigwritesize,hsid.Index, 0, 1.0
Index++
loop

この処理とは同じことをしているように思うのですが、上の処理は正常に動作しますが、
下の処理はE3DSigLoadFromBufの所で「エラー38:外部DLL呼び出しに失敗しました」になってしまいます。

これには何か違いがあるのでしょうか。
お手数ですが教えて頂ければ幸いです。よろしくお願いします。

タイトルRe: E3DSaveSig2Buf と E3DSigLoadFromBuf
記事No9889
投稿日: 2011/10/26(Wed) 03:29
投稿者おちゃっこ
こんにちはー。

原因は、HSP版ではBuf系命令でbuf引数に多次元配列を指定できないことです。
つまり上のコードもたまたま動いただけで、正しくない使用法です。

タイトルRe^2: E3DSaveSig2Buf と E3DSigLoadFromBuf
記事No9890
投稿日: 2011/10/26(Wed) 06:24
投稿者seasalt
そうだったのですか!知りませんでした。
アンドゥ用に履歴を残しておきたかったんですが、何か別の方法を考えたいと思います。
回答ありがとうございました。

タイトルRe^3: E3DSaveSig2Buf と E3DSigLoadFromBuf
記事No9891
投稿日: 2011/10/26(Wed) 08:15
投稿者おちゃっこ
E3D命令では1次元を使用し
その前後で多次元配列にコピーしたりペーストしたりすればいいと思います。

タイトルRe^4: E3DSaveSig2Buf と E3DSigLoadFromBuf
記事No9892
投稿日: 2011/10/26(Wed) 17:43
投稿者seasalt
ありがとうございます。その線でやってみます。