VB.NET System.Arrayクラスを使用して、構造体の検索を高速で行うには?


.net初心者  2006-03-30 06:58:25  No: 94832

前スレ
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200603/06030047.txt
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200603/06030090.txt
に関連し、System.Arrayクラスを使用して、構造体の検索を
行うにはどうすればいいですか?

具体的には、以下の構造体で、例えば 2006/02/02の
インデックス番号を検索したいと思っています。
よろしくお願いします。

Structure myStock
    Dim DataDate As Date
    Dim Open As Double
    Dim High As Double
    Dim Low As Double
    Dim Close As Duble
    Dim Volume As Double
End Structure

Dim Stock as myStock

Stock(1).DataDate = Datevalue("2006/02/03")
Stock(2).DataDate = Datevalue("2006/02/02")
Stock(3).DataDate = Datevalue("2006/02/01")


我龍院忠太  2006-03-30 16:48:04  No: 94833

本日PC快調、クリーン・インストールしました。(^^;
えーと、今までの説明がある程度理解されているのかどうか
少々心配ですが。

Dim MyDate As myStock
MyDate.DataDate = New Date(2006, 2, 2)
Console.WriteLine(Array.BinarySearch(Stock, MyDate))
検索はこうですね。


我龍院忠太  2006-03-30 17:43:02  No: 94834

書き忘れたので追加しますが
>Dim Stock as myStock
これは全くだめですね、(^^;
StockがmyStockの配列で宣言されていないジャン。

>Stock(1).DataDate = Datevalue("2006/02/03")
>Stock(2).DataDate = Datevalue("2006/02/02")
>Stock(3).DataDate = Datevalue("2006/02/01")
これもだめ、(^^;
.NETの配列のインデックスは0から始まります。
Stock(0).DataDateに何も代入しないでSortすると、
Stock(0).DataDateには'0001/01/01 0:00:00'が入って、
Sort時にそれが1番最初に出て来てしまいますよ。


.net初心者  2006-03-31 05:22:05  No: 94835

我龍院忠太 様

回答ありがとうございます。
Console.WriteLine(Array.BinarySearch(Stock, MyDate))
だとうまくいきません。
MyDateの下に波線が出て、
変数 'MyDate' は、値が割り当てられる前に参照によって使用されています。Null 参照の例外が実行時に発生する可能性があります。構造体、またはすべての参照メンバが使用前に初期化されていることを確認してください。
と出てきます。
対処法を教えていただけますでしょうか?
よろしくお願いします。


我龍院忠太  2006-03-31 06:54:18  No: 94836

おかしいな、試した上で投稿してるんですが。
Dim MyDate As myStock
MyDate.DataDate = New Date(2006, 2, 2)
これが抜けてるのでは。
と言うか、どんなコードで試してるんですか。


.net初心者  2006-03-31 07:34:34  No: 94837

我龍院忠太 様

何度もご回答ありがとうございます。
実際のコードは以下です。

Dim MyDate As myStock
MyDate.DataDate = New Date(2006, 3, 29)
Dim dum As Integer = Array.BinarySearch(StockTMP, MyDate)
                                                  ~~~~~~~ココが警告
よろしくお願いします。
(一応走りますが、警告を出ないようにできますか?)


.net初心者  2006-03-31 07:35:28  No: 94838

すみません。ずれました。
警告部分は、",MyDate)" 部分です。
よろしくお願いします。


通りすがり  2006-03-31 08:34:34  No: 94839

「StockTMP」ってどこにあるの?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加