[1969] Re: バイナリデータをポインタで渡す方法

投稿日 2018/01/25(Thu) 13:25:47
投稿者 ゆうと
参照先

こんにちは ゆうとです。
お返事遅くなりました。

バイナリデータについては、バイナリデータ型のオブジェクトを
ネイティブ関数の「呼び出す」手順の引数にそのまま指定してください。
自動的に、バイナリデータの内容をネイティブ関数用のメモリ領域へコピーして
そのポインタが関数に渡されるようになっています。

添付されていたプログラムでは、まず「素材リストからバイナリ配列として取得」するようにします。(文字列では文字コードの変換が行われるために内容が破損します)
また引数一覧のデータ型には文字列ではなくバイナリデータ型を指定します。それに伴って「バイト数」手順ではなく「長さ」設定項目に変えています。
バイナリデータを引数に指定すると、自動的にポインタが渡されますので、「ネイティブ参照」は必要ありません。(ネイティブ参照を使うと、ポインタのポインタになってしまいます)

修正したプログラムを添付します。最新版1.5.881でお試しください。

--------------------
[ファイル名]で〈【ストリームフラグ】として〉メモリから読み込みの手順:整数
  もしストリームフラグが無なら
    ストリームフラグは、0
  もし終わり
  ストリームは、ネイティブ関数(ファイル名「bass.dll」,関数名「BASS_StreamCreateFile」)を作る
  ストリームの戻り値型は、整数
  ストリームの引数型一覧は、{真偽値, バイナリデータ, 長整数, 長整数, 「System.UInt32」}
  音声内容は、素材リストから「tada.wav」をバイナリ配列として取得したもの
  ファイルサイズは、音声内容の長さ
  //audio=ネイティブ参照(型バイナリデータ, 値[音声内容])を作る
  ストリームを{○, 音声内容, 0, ファイルサイズ, ストリームフラグ}で呼び出してストリーム番号とする
  エラーコード取得
  ストリーム番号を返す
終わり
--------------------


関連一覧ツリー

をクリックするとツリーを一括表示します)

返信フォーム

(この投稿に返信する場合は下記フォームから投稿して下さい)
(1MBまで)
(英数字で8文字以内)

- 投稿修正/削除フォーム -
処理 No パスワード

▲ページの先頭へ

- WebForum -