そのほか
626976 ランダム
 HOME | DIARY | PROFILE 【ケータイで見る】 【ログイン】

会社員KNIGHTの株自動売買

PR

Calendar

Category

Archives

Keyword Search

▼キーワード検索

Comments

 ac_knight@ Re[1]:第46回 尼崎産業人卓球大会(11/24) ああこりゃこりゃさん >KNIGHTさんと公式…
 ああこりゃこりゃ@ Re:第46回 尼崎産業人卓球大会(11/24) KNIGHTさんと公式戦で一度お手合わせ願い…
 ac_knight@ Re[1]:第46回 尼崎産業人卓球大会(11/24) GAKOさん >Wで準優勝、おめでとうござい…
 GAKO@ Re:第46回 尼崎産業人卓球大会(11/24) Wで準優勝、おめでとうございます! 良…
 ac_knight@ Re:ふむふむ(02/12) さすらいのカットマンさん コメント有難う…
 さすらいのカットマン@ ふむふむ 高くて深いカットってすごく効きますよね…
 ac_knight@ Re[1]:売買なし11(11/15) わらふるさん >ひとつ質問なんですが、kn…
 わらふる@ Re:売買なし11(11/15) ひとつ質問なんですが、knightさんの株を…
 ac_knight@ Re[3]:私のラケットとラバーの思い出。(01/04) アザゼルさん >う~ん・・・。 >ぶっちゃけ…
 ac_knight@ Re:お疲れさまでした!(11/09) まぅさん >第一回(二回があるんかいてハ…

Favorite Blog

放蕩日記 houtou777さん
萌えブログ 出張所… 下澤信樹さん
40歳からの卓球上達… ttdriveさん

Headline News

Rakuten Ranking

Let's link!

Wishlist

Rakuten Card

Mobile

ケータイ
スマートフォン
m ケータイにこのブログのURLを送信!

 

Apr 15, 2008
楽天プロフィール XML

VB.NETで楽天RSSからリアルタイム情報を取得する<その5>

(2)
前回は、画面に銘柄名称と現在値を表示するコードを追加しました。
でも、銘柄名称は良いとして現在値(現在の株価)については金額であるにも関わらず
小数点以下2桁まで表示され、しかも数字の手前に空白が表示されていました。
これじゃあ見映えが悪いです。
という訳で今回は、株価を取得した時に実際どうすれば良いかを解説します。

現在のコードはこうなっています。

Dim praceByte As Byte() = client.Request("現在値", 1, 60000)
現在値.Text = Encoding.Default.GetString(praceByte)


「Encoding.Default.GetString(praceByte)」の戻り値であった小数点と空白付きの
文字列を、何とか綺麗な数字として扱いたいです。

ではまず、画面に表示する見映えの部分に手を入れます。
最初に文字列を変数に入れましょう。この時、前後の余分な空白を取り除くメソッドを
追加します!

Dim priceText As String = Encoding.Default.GetString(praceByte).Trim

Trim()は、文字列の前後の空白を取り除いてくれるメソッドで、戻り値はStringです。
「Encoding.Default.GetString(praceByte)」の戻り値がStringなので、その戻り値の
Stringに対してまたTrim()メソッドを呼んで、その戻り値をpriceTextというStringに
セットしています。
ちなみに「Trim」の後ろにカッコがありませんが、VBは引数が無いメソッドはカッコを
省略出来ます(書いても良いですよ)。

次に、priceText(空白を除去した小数点付きの数字を表すString)から小数点以下を
取り除いて整数値にします。

整数値にする方法ですが、私はこんな方法を使っています。
 ※もっとスマートにやってる方は教えて下さい(汗)

Dim dotIndex As Integer = priceText.IndexOf(".")
If dotIndex > -1 Then
priceText = priceText.Substring(0, dotIndex)
End If


1行目のIndexOf()で小数点の位置(priceTextの何桁目にあるか)を調べます。
1桁目なら0、2桁目なら1、・・・という風に返ります。小数点が無ければ-1になります。
「If」の後は「小数点以下が存在したら」という意味になります。
なぜ「小数点以下が存在したら」という条件が必要かは後述します。
Substring()は、対象のStringの、何桁目から何桁を切り出すメソッドです。
上の例だと、0(1桁目)から小数点位置の桁数を切り出して再びpriceTextにセットします。
つまり、小数点以下をちょん切っています。

・・・ここで1つポイントがあります。
もしDDEクライアントのRequest()メソッドを呼び出した時が8:30とかだったら
どうでしょう?現在の株価ってありますか?ありません。
そういう時には、実は戻り値は空白になっています。
その時のために「小数点が見つかった時だけ」という記述が必要なんです。

ちなみに「If~Then~End If」の説明は割愛させて頂きます。

あと「表示をカンマ区切りにしたい」等の要望もあると思いますが、その場合は
上のpriceTextを一度整数値(Integer型)に変換し、それをまた文字列に変換する時に
書式を設定してやれば可能です。
整数値に変換する時も、株価が無い時(ザラバ前)を考慮する事を忘れないように
して下さい(やり方はあえて書きません。必要であれば各自組み込んで下さい)。

また、プログラム中で数値の大小比較を行ったり計算を行うために株価などの数値を
整数で扱いたい時もどうようです。文字列のままでは無理なので整数値に変換して
あげましょう。

最後に、現在値のテキストボックスを右揃えにしないと、数値なのに左詰めは
格好悪いので、そこだけ変更します!

現在値のテキストボックスを選択した状態で、プロパティウィンドウの
「TextAlign」を「Right」に変更しましょう。

WS000023.JPG

実行させると、株価の見映えが前回より良くなっているのが分かりますよね♪

WS000024.JPG

今回は短いですがここまで。
そして今回で「リクエスト方式」によるリアルタイム情報の取得について解説を終了します。

分からない事、また「もう少しこうしたんだけど」など質問があればコメントを下さい。
分かる範囲でお応えします。
質問が無かったり、その内容が収束したと思ったら、少し日にちを置いてから
「アドバイス方式(値に変更があった時に通知してくれる方式)」編を始めようと思います。
宜しくお願いします。


現在のソースコードはこうなりました。

WS000025.JPG

ちなみに「アドバイス方式編」も、画面は同じものを使用しようと考えています(^-^;





楽天SocialNewsに投稿!

Last updated  Apr 15, 2008 11:08:06 PM
コメント(2) | コメントを書く




■コメント


 ラフな変換   micorosoft さん
現在値などを整数値にする方法ですが、ラフに処理するならVal関数を使用して

priceText = Val(priceText).ToString

が簡単です。trimも不要です。8:30のときはゼロになります。 (Apr 16, 2008 01:43:28 AM)

 なるほど   ac_knight さん
micorosoftさん
>現在値などを整数値にする方法ですが、ラフに処理するならVal関数を使用して

>priceText = Val(priceText).ToString

>が簡単です。trimも不要です。8:30のときはゼロになります。
-----
寄り付いたかどうかの判断が不要の場合は使えますね。
(Apr 16, 2008 08:05:18 AM)

Powered By 楽天ブログは国内最大級の無料ブログサービスです。楽天・Infoseekと連動した豊富なコンテンツや簡単アフィリエイト機能、フォトアルバムも使えます。デザインも豊富・簡単カスタマイズが可能!

Copyright (c) 1997-2013 Rakuten, Inc. All Rights Reserved.