• 締切済み

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
質問者

お礼

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

関連するQ&A

  • VB2008でテキスト以外のファイルの開き方について

    現在VB2008環境でファイル操作ができるソフトを開発中です。 openfiledialogでファイルを選択して開く、といったことがしたいと思い、以下のようにやってみました。 Dim ofd As New OpenFileDialog() ofd.FileName = FN ofd.InitialDirectory = DN ofd.FilterIndex = 2 ofd.Title = "" ofd.RestoreDirectory = True ofd.CheckFileExists = True ofd.CheckPathExists = True If ofd.ShowDialog() = DialogResult.OK Then Dim FO As Object FO = Shell(ofd.InitialDirectory + ofd.FileName, vbNormalFocus) End If FN,DNは他で指定したファイル、ディレクトリの名前です。 これでデバック実行すると「FileNotFoundExceptionはハンドルされませんでした」というエラーが出て開けませんでした。 VBでのソフト開発自体はじめて間もない為理解していない部分も多く説明も至ってはいないと思いますが、どうかよろしくお願いします。

  • ファイル名を複数個配列で確保したいときどうすればいいですか?

    int i; FILE *fp[5]; //ここの宣言がわかりません char *(filename[5])={"1.txt","2.txt","3.txt","4.txt","5.txt}; for(i=0;i<5;i++) fp[i]=fopen(filename[i],"w"); のようなことをしたいのですが、ファイル名を複数個配列に格納するにはどのようにしたらいいんでしょうか? 回答お願いします。

  • VB6でmdbファイルを取り扱う場合について

    VB6で作られたプログラムのexeやdllファイルの一覧を受け取り、こちらの環境で 実行すると1カ所だけエラーになる処理があります。 それは、DBからデータを取得し→ローカルmdbファイルを作成しデータを格納 →mdbファイルの内容を印刷 という流れの処理なのですが、そこでエラーダイアログが出て "Error detected by database DLL"と表示されます。 ソースがないので細かいデバッグができないのですが、推測としてどういった 原因が考えられるのでしょうか? 別の環境で正常に動いていたのでプログラム自体にエラーがあることはありません。 実行環境はXP SP3です。 今の環境はAccessが入ってないのですが、それが原因なんでしょうか?

  • VB.NETで、DLLを頂いたんですが・・

    VB.NETでプログラムを作成しているのですが、 DLLを頂きました。 このDLLをプログラムで使いたいのですがよくわかりません。 (1)DLLは実行ファイルにおけばいいんですよね? (2)DLLを参照しろっていう設定は必要ですか? (3)DLLには、プロパティ、メソッド、イベントとあるみたいなんですが、これらを宣言しないといけないと思うのですがどうやればいいのでしょうか? (4)下のような資料もらったのですがVBcnvというのが定義されていないとエラーがでるのですがどうやって宣言するのでしょう? private <任意名> as VBcnv (5)libファイルも一緒にあったのですが、どういう風に使えばいいのでしょうか?何につかうのでしょうか? すいません、どなたかお助けを~

  • エクセルをMysqlに格納

    いつもお世話になっております。 Linux,mysql,PHP,apacheの環境で試しているのですが、 エクセルデータをアップロードし、MysqlのBLOB型に格納したいと思っております。また、格納したMysqlのエクセルデータをダウンロードできる流れを考えております。 テンポラリファイルをそのままINSERTするとデータは格納されるのですが、抽出したときに文字化けしてしまいます。 エンコード方法など何か指定するのかと思うのですが 調べたのですが見つかりませんでした。 内部エンコードはEUCになっています。 説明不足な点があるかと思いますが、ご教授お願いします。 /*insert時*/ $localfile = file_get_contents($_FILES['userfile']['tmp_name']); $sql = "INSERT INTO TABLE (fileup) VALUES '".$localfile ."'"; /*ダウンロード時*/ header("Content-type: application/vnd.ms-excel"); header("Content-Disposition: inline; filename=\"".date('Ymd')."list.xls\""); echo $binary;//selectで抽出した時のデータ

    • 締切済み
    • PHP
  • フォルダ内のファイル名の末尾7文字を一括置換

    フォルダ内のファイル名の末尾7文字を一括置換 こんにちは、VBA初心者です。 D:\test フォルダに test_jp.txt、sample_jp.txt、testsample_jp.txt といった名前のファイルが格納されているとします。 これらのファイル名の「_jp.txt」の部分(末尾7文字の部分)を「_en.txt」に置換したいのですが、うまくいきません。 以下のようなプログラムを書いてみたのですが、どこがいけないのでしょうか。 ※「実行時エラー53 ファイル名が見つかりません。」となります。 ※ VBEのローカルペインによると、エラー時には filename 変数に sample_jp.txt が格納されています。 Sub ファイル名置換() Dim fileName As String fileName = Dir("D:\test\*_ja.txt") Do Until fileName = "" Name "D:\test" & fileName As "D:\test" & Left(fileName, Len(filename) - 7) & "_de.txt" filename = Dir() Loop End Sub

  • ArrayにDouble型の数字を格納

    環境はVisual Studio 2005 Standard Editionです. ArrayにDouble型の数字を格納しようしたら,以下のエラーが表示されました. 型 'System.Double' のオブジェクトを型 'System.Array' にキャストできません。 どのようにArrayを宣言すればよいのでしょうか.よろしくお願いします.

  • ファイルからデータを読み込んで配列に格納するには

    読んでいただいてありがとうございます。 Perlをはじめたばかりなのと プログラミング自体もまだまだですので 困っております。 テキストデータ 例えば apple りんご banana バナナ orange オレンジ などというファイルから読み込んで、 my $data ={ my @english, my @japanese, }; などの、配列の構造体に格納するにはどのようにしたら よいのでしょうか。 最初、本を少し読んだだけの知識で、 use strict; use warnings; my $filename = 'data.txt'; my $data = { my @english, my @japanese }; open(IN,$filename) or die "$filename: $!"; while(my $line=<IN>){ for(my $i=0;$i<N;$i++){ ($data->{@english}[$i],$data->{@japanese}[$i])=split(/ /,$line); print "$data->{@english}[$i]\n"; } } close(IN); } などと書いて、 apple banana orange と表示されるのを期待したのですが、 ダメでした。 参考までに私の誤ったプログラムものせましたが、 全然違っているかもしれませんので、まったく新たに アドバイスしていただいてもかまいません。 これを応用したものを使いたいので ぜひともどなたかお教え いただければと思います。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 【設計】vb.netでファイルを読み込みDB登録を行う

    すみません、vb.netで開発を行うにあたり設計に詳しい方が いらっしゃいましたらご教授願います。 開発する機能はタイトルの通り、txtファイルからデータを読み取り 内容をデータベースに登録するというものですが 現在、開発するにあたり二つのロジックを思いついており どちらが適切か迷っております。 (1) あらかじめtxtファイルの内容を全てリードし配列等の一時変数に退避   ファイルリード終了後、配列に格納されたデータを1件ずつ登録 (2) txtファイルの内容を1件リードするごとにデータベースに登録 開発環境は、vb.net、Oracle です。 txtファイルに格納されているデータ量はファイルにより様々ですが 多くても2万件が予想されます。 迷っている理由としては、 (1)は2万件のデータ量を配列に格納したとしてメモリが耐えれるかどうか? (2)は、1件ずつ読込みデータベースに登録するとなると  その分ファイル及びデータベースへのアクセス時間が長くなり  負荷がかかるのでは? という、懸念事項が考えられ迷っております。 上記、二つの開発手法の内どちらがベストか または、上記以外にベストなロジックがあればご教授お願い致します。

  • ACCESSで計算結果を格納する方法

    こんにちわ。いつもお世話になっております。 うまく説明できないのですが、フォームに入力した金額などを、Sum計算式で合計や粗利などをだせるようにテキストボックスにつくりました。 この数値をテーブルに格納したいのですが、そういう方法はあるのでしょうか。 「演算結果をテーブルに格納」というタイトルで質問されていらっしゃる方の回答を参考にしてみたのですが、うまくいきません。 いろいろ触っているうちに 「イベントプロパティに指定した式クリック時でエラーが発生しました。名前が適切ではありません:レコードの保存_Click」というエラ 「"LinkMasterGields/リンク親フィールド"プロパティの設定でエラー'名前が適切ではありません:レコードの保存_Click'が発生しました。」というエラーが出始めました。出る前に記述したところをなおしたつもりですがそれでもでてきます。 上司は「エラーが出てくるようになったら進んでいる証拠だから」とのんきなのですが、猶予をいただいてずいぶんたつのでそろそろ形にしていかなくてはと恥をしのんでいろいろ質問させていただこうと決意しました。どうぞよろしくお願いいたします。

専門家に質問してみよう