[過去ログ] Delphiゲームプログラミング相談室 (976レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
63
(2): 名前は開発中のものです。 [sage] 02/01/21 15:52 ID:??? AAS
>>61
61(5): 名前は開発中のものです。 [] 02/01/21 12:21 ID:cvZI6toD(1) AAS
delphiで、効果音とかの短いwavを、いったんメモリに読み込んで鳴らそうて思ってるんですが
なかなか上手くいかないんで教えろ。
今のところ
sndPlaySound(Pchar('koukaon.wav'),SND_ASYNC)
ってなってるところ、最後のパラメーターをSND_MEMORYって書き換えたいんだけど
そうするとファイル名のところをポインタ型にしなくちゃいけないらしんだよ。windows的に。
で、filestreamとか使ってwavfile読み込んだ変数のポインタ渡そうとしても
型が違いますとかコンパイラの人に怒られちゃうんですが、
どうしたら良いんでしょうか?
フサギコさん教えて!
 function load(fn: string): string;
 var
  fs: TFileStream;
  ss: TStringStream;
 begin
  result := '';

  fs := TFileStream.Create(fn, fmOpenRead);
  try
   ss := TStringStream.Create('');
   try
    ss.CopyFrom(fs, fs.Size);
    result := ss.DataString;
   finally
    ss.Free;
   end;
  finally
   fs.Free;
  end;
 end;
こんなコードを使って
s: string;
s := load('gikohahaha.wav');
sndPlaySound( pchar(s), SND_MEMORY or SND_ASYNC );
とか。
65: 61 [sage] 02/01/21 23:34 ID:??? AAS
>>Delフサギコ
ム板はなんだか敷居が高く感じられるので(;´Д`)コワヒ。。。

>>63
無事動きました。(゚д゚)ウマー
えーと、いったんTStringStreamに読み込んで。。。
(;´Д`)理解するまでもう少し時間をください。
これから研究してみます。
ありがとうございました。
72: 63 [sage] 02/01/22 10:14 ID:??? AAS
stringに入れるのはキャストの問題っつーよりも
後始末忘れていいっていうメリットのためだったりする。
すでに動いてるコードがあったので貼っただけで、
キャストは普通にできるという指摘はするの忘れた(笑)

あと、ファイルから文字列への読み込みはこんな回りくどいことしなくても
TFileStreamからサイズ得て、読込先文字列にSetLengthして
Read(文字列[1], サイズ)とかやってしまうほうが手っ取り早いね。

なにぶん昔書いたコードなんで。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.044s