C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 33 を表示中)
■16627 / )  Re[5]: 構造体 参照メンバの初期化
□投稿者/ Jitta (462回)-(2008/04/08(Tue) 23:03:09)
どうして 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 です。

返信 編集キー/


管理者用

- Child Tree -