前スレ
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")
本日PC快調、クリーン・インストールしました。(^^;
えーと、今までの説明がある程度理解されているのかどうか
少々心配ですが。
Dim MyDate As myStock
MyDate.DataDate = New Date(2006, 2, 2)
Console.WriteLine(Array.BinarySearch(Stock, MyDate))
検索はこうですね。
書き忘れたので追加しますが
>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番最初に出て来てしまいますよ。
我龍院忠太 様
回答ありがとうございます。
Console.WriteLine(Array.BinarySearch(Stock, MyDate))
だとうまくいきません。
MyDateの下に波線が出て、
変数 'MyDate' は、値が割り当てられる前に参照によって使用されています。Null 参照の例外が実行時に発生する可能性があります。構造体、またはすべての参照メンバが使用前に初期化されていることを確認してください。
と出てきます。
対処法を教えていただけますでしょうか?
よろしくお願いします。
おかしいな、試した上で投稿してるんですが。
Dim MyDate As myStock
MyDate.DataDate = New Date(2006, 2, 2)
これが抜けてるのでは。
と言うか、どんなコードで試してるんですか。
我龍院忠太 様
何度もご回答ありがとうございます。
実際のコードは以下です。
Dim MyDate As myStock
MyDate.DataDate = New Date(2006, 3, 29)
Dim dum As Integer = Array.BinarySearch(StockTMP, MyDate)
~~~~~~~ココが警告
よろしくお願いします。
(一応走りますが、警告を出ないようにできますか?)
すみません。ずれました。
警告部分は、",MyDate)" 部分です。
よろしくお願いします。
「StockTMP」ってどこにあるの?
ツイート | ![]() |