掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ファイルをバイナリで読み込むには?? (ID:116426)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 「BASE64」での変換処理は全くしたくないんです なるほど、了解しました。(ところで、BASE64って何か御存知ですか?) > Dim opFile As New System.IO.FileStream(OpenFileDialog1.FileName, IO.FileMode.Open) 上記は例えば、 Dim opFile As System.IO.FileStream opFile = New System.IO.FileStream(OpenFileDialog1.FileName, IO.FileMode.Open) とか、あるいは、 Dim opFile As System.IO.FileStream = New System.IO.FileStream(OpenFileDialog1.FileName, IO.FileMode.Open) などとも書けます。 「Dim 変数名 As New 〜」の構文は、これらを省略した表記方法と言えます。 > にあるように New ってどういう意味を持つのでしょうか?? クラスを利用するには、多くの場合、New を使ってオブジェクトを作成する必要があるのです。 (この事を、「インスタンスを割り当てる」という言い方をする場合もあります) そして New とは、データ型の新しいインスタンスを作成するためのキーワードです。 ……これだと分かりにくいかも知れませんので、別の言い方をしてみます。 クラスと、そのインスタンス(オブジェクト)とを比較した場合、クラスは「設計図」、 そしてインスタンスは「設計図によって作られたモノ」と喩えられることがあります。 たとえば、「Form」というクラスは御存知ですよね。この Form を使って、 Dim F As New Form() F.Show() のようなコードを(ボタンのClickイベントなどに)書いてみたとします。 そうすると、空のフォームを表示する事ができるはずです。 しかしここで、New を記述するのをやめて、 Dim F As New Form() F.Show() と書いた場合は、 "オブジェクト参照がオブジェクト インスタンスに設定されていません。" というエラー (NullReferenceException例外) になってしまいます。 これは何故かわかりますでしょうか? 単に Form 型の変数を宣言しただけでは、「フォームの設計図」が宣言されただけなので、 この変数 F の実態は、まだ存在していない状態(Nothing) のままとなります。 フォームがまだ作られていないのに、それを表示(Show)させようとすると、エラーになります。 画面に表示したいのなら、Formという設計図を元に、実際のフォームを作成する 必要があるというわけです。 そして、この時に使われるのが、New というキーワードです。 これを使えば、フォームを新規に作成してあげる事ができます。 # この New というキーワードは、今回使っていた OpenFileDialog1 などでも利用されています。 # 普段は、開発環境が自動生成してくれているので、気が付きにくいですが、コード中の # 『 Windows フォーム デザイナで生成されたコード 』という部分を開いてみると、 # OpenFileDialog などの各種コントロールを New している箇所を見る事ができます。 なお、クラスによっては、作成時に幾つかの付加情報を必要とするものもあります。 そうしたクラスの場合は、New する時の引数に、それらの情報を渡す事になります。 (そして System.IO.FileStream も、New 時に引数を必要とするクラスです) ———さて、話を FileStream クラスに戻してみます。 ファイルを読み込むために、FileStream クラスを使おうとしても、 Dim opFile As System.IO.FileStream のように変数を宣言しただけでは、opFile は空っぽ(Nothing)の状態のままなので、 ファイルの読み込みは行えません。 実際にファイルを操作したいのであれば、『New』を使って、この opFile 変数に、 「何というファイルを、どのような形式で扱うのか」という情報を作成し、 それを、opFile に格納してあげる必要があるというわけです。 # New とはこのような働きをしているわけですが…こんな感じの説明でわかりますか?(^^;)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.