• 締切済み

VBの音声ファイルの格納について

参考にしている資料に MMControl1.FileName = fstrvoice + "spk0.wav" というのがあるのですが、これを.Net環境で打ち込むとfstrvoiceが宣言されていない、というエラーになってしまいます。 教授からの説明によると、fstrvoiceは宣言の必要が無く、そこにファイルの情報が格納されていて、そのファイルにspk0.wavと名前をつけているそうなのです。 これと同じことを.Net環境で行うためにはどのようにしたら良いでしょうか。 よろしくお願いします。

みんなの回答

回答No.4

念のためこいつをぺたぺた。 http://dobon.net/vb/dotnet/vb6/apppath.html

回答No.3

.netは未経験ですので、間違ってたらごめんなさい。 FileNameというからには、fstrvoiceには"c:\winnt\"のようなファイルパスを表す文字列が入るような気がします。 これなら『そこにファイルの情報が格納されていて、』の部分に合致しますよね。 そう考えた場合、No.1、No.2の方も仰られている通り、fstrvoiceをString型の変数として宣言し、ファイルパスを代入してやればよいと思います。 exeファイルと同じ場所にspk0.wavという音声ファイルがあると仮定すると、App.Pathを利用して以下のようになります。 Dim fstrvoice As String fstrvoice = App.Path & "\"

matchan
質問者

お礼

有難うございました。 fstrvoiceにはファイルのパスではなく、音声情報が入っているらしいんです・・・とりあえず別の方法を考えて見ます。

回答No.2

問題解決のための話ではありませんが >変数は必ず宣言する癖をつけましょう。 について補足します http://homepage1.nifty.com/CavalierLab/lab/vb/implicit.html ------------------- タイプミスによる例を挙げると Public InternetID as Integer Private Sub Command1_Click() InternetID = InternetID End Sub Private Sub Command2_Click() InternatID = InternetID + 1 End Sub コマンドボタンが二つあり、 どちらをクリックしても、InternetIDの値が増えるように 組んだ・・・はずです。 実際「コンパイルが通ってしまう」ので うまくいくかと思いきや Command2の中、Intern"a"tIDになってます。 ローカル変数InternatIDが自動的に確保され、 代入されているので、InternetIDの値が変化しません 変数の宣言を強制しておけば、これらのタイプミス があったばあいにコンパイラが 「変数Internatが定義されていないよ?」と怒ってくれます VB.NETでは宣言が必須だったと思います -------

matchan
質問者

お礼

有難うございました。 宣言はするようにしているのですが、今回は宣言の必要がないと言われていたのであえてしませんでした・・・ fstrvoiceは無視して行こうと思います。

  • tak2003
  • ベストアンサー率32% (174/540)
回答No.1

変数は必ず宣言する癖をつけましょう。 なので、fstrvoiceも宣言すればいいだけです。 使わないならば外せば良いと思います。 結局MMControl1.FileName="spk0.wav"となります。 ファイル名を指定する場合、PGの全体からファイル名を検索して変更する必要が無いように、ファイル名を格納する変数を用いるのが常識です。 この場合はMMControl1.FileNameがファイル格納変数となります。

matchan
質問者

お礼

有難うございました。 参考にさせていただきます。