3964414 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

会社員KNIGHTの趣味三昧(卓球・盆太鼓・色々!)

会社員KNIGHTの趣味三昧(卓球・盆太鼓・色々!)

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Calendar

Category

カテゴリ未分類

(0)

卓球

(1142)

盆太鼓・盆踊り

(402)

トイドローン

(21)

その他

(332)

■■■■■■↓以下は凍結カテゴリー↓■■■■■■

(0)

KATS(自動売買プログラム)

(87)

「VB.NETで自動売買」入門

(24)

本日の取引

(1292)

デイトレ結果(勝ち)

(365)

デイトレ結果(負け)

(591)

夜間取引結果

(15)

今週の取引

(480)

今月の取引

(103)

明日の監視銘柄

(54)

株関連

(55)

草野球

(36)

Archives

Keyword Search

▼キーワード検索

Comments

 KNIGHT@ Re[1]:第1回 日中杯 SpinOnline(WSS団体戦)(04/14) fukufuku1789さんへ いえいえ。むしろ私が…
 fukufuku1789@ Re:第1回 日中杯 SpinOnline(WSS団体戦)(04/14) 一緒に試合に出てくださりありがとうござ…
 KNIGHT@ Re[1]:第15回 朝霧オープン卓球大会(チームマッチ)(01/21) fukufuku1789さんへ お疲れ様でした。今回…
 fukufuku1789@ Re:第15回 朝霧オープン卓球大会(チームマッチ)(01/21) 惜しい試合が多かったですね。 また卓球し…
 KNIGHT@ Re[3]:2023年度台東区オープン年代別後期団体戦(12/10) マニャさんへ コメントどうも有難うござい…
 マニャ@ Re[2]:2023年度台東区オープン年代別後期団体戦(12/10) knightさん ご返信誠にありがとうござい…
 KNIGHT@ Re[1]:今年の卓球を振り返って(12/29) ふくたさんへ お疲れさまでした!沢山ご一…
 ふくた@ Re:今年の卓球を振り返って(12/29) 今年も一年お疲れ様でした!
 ac_knight@ Re[1]:2023年度台東区オープン年代別後期団体戦(12/10) マニャさんへ コメントどうも有難うござい…
 マニャ@ Re:2023年度台東区オープン年代別後期団体戦(12/10) KNIGHTさん 初めまして。 いつも楽しく…

Favorite Blog

kaorin♪FX&I… 働く主婦♪かおりんさん
投資家へ~Mr.Hのふ… HM-kabuさん
2006年2月から株を始… hot_staffさん

Headline News

Rakuten Card

Apr 15, 2008
XML
前回は、画面に銘柄名称と現在値を表示するコードを追加しました。
でも、銘柄名称は良いとして現在値(現在の株価)については金額であるにも関わらず
小数点以下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

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





お気に入りの記事を「いいね!」で応援しよう

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



© Rakuten Group, Inc.