■16630 / inTopicNo.10) |
Re[6]: 構造体 参照メンバの初期化 |
□投稿者/ ネタ好き (58回)-(2008/04/08(Tue) 23:23:31)
|
■No16627 (Jitta さん) に返信 > どうして Microsoft.VisualBasic 名前空間を使うのだろう?というのはおいておくとして。 > > たぶん、DirectCast は要らないと思う。 > >>『変数'typData'は、値が割り当てられる前に参照によって使用されています。Null参照の例外が実行時に発生する可能性があります。 >>構造体、またはすべての参照メンバが使用前に初期化されていることを確認してください。』 > > ですよね?ということは、 > >>'変数宣言 >>Dim typData As DATA_TYPE >>Dim TempData As System.ValueType = DATA_TYPE←ここで警告が出ます > > ここが、本当は、 > >>'変数宣言 >>Dim typData As DATA_TYPE >>Dim TempData As System.ValueType = typData > > だったんじゃないですか? > ってことで、 > > ----- > '変数宣言 > Dim typData As New DATA_TYPE > > 'ファイルオープン > GetFileNum = FreeFile() > FileSystem.FileOpen(GetFileNum, ファイル名, OpenMode.Binary, OpenAccess.Read, OpenShare.LockWrite) > > 'データを取得する > ' http://msdn2.microsoft.com/ja-jp/library/yf2cta70.aspx > FileSystem.FileGet(GetFileNum, typData, 1) > > '一時的に格納したデータを復元 > typHeadData = DirectCast(typData, UCRHEAD_TYPE) > ----- > TempData が要らず、typData を New するようにして TempData から置き換えればいいと思います。 > 「FileSystem::FileGet(Int32, ValueType, Int64)」なので、Type を渡す必要はなく、データを読み込むための領域を渡してやれば OK です。 >
いやぁ、始め私もそう思って迷ったのですが、 一々別変数にしているところに何かあるなーと思って、ああいう形にしてみました。
|
|