|
|
|
カテゴリ:「VB.NETで自動売買」入門
前回、なぜ自分のソースコードで出来高がちゃんと表示されなかったのか疑問だったので
今日確認してみました。すると、大きな見落としがある事に気付きました。。。 KATSでもバイト配列を文字列に変換する処理があって、入門編のサンプルでも 同じように解説しているつもりでした。でも間違っていました(汗)。 今まで<その5><その6><その7><その8><その10>と5回も登場した このソース。変数名は違う時がありますがここです。 Dim priceText As String = Encoding.Default.GetString(byteData).Trim 「Encoding.Default.GetString(byteData)」でバイト配列を文字列にしています。 ですが、KATSのソースはこうなっています。 Encoding.Default.GetString(byteData, 0, byteData.Length - 1).Trim 違いは、最後の1バイトを除いて文字列に変換しているところです。 最後の1バイトは制御文字が付いているので除去しています。ここが間違っていました。 もし過去に出てきたソースを修正する場合は上のコードを参考にして下さい。 もちろん、整数に変換する場合は前回ご紹介した CInt(Encoding.Default.GetString(byteData)) という方法で、1バイト取り除いたり空白を取り除いたり、あと小数点以下も 無くしてくれるので便利です。 今回は私の解説の訂正でした。失礼しました。
[「VB.NETで自動売買」入門] カテゴリの最新記事
CIntは結果的に正しく動いてるだけで、本当はTrimしてから数値化するのが正解。
Null文字をスペースなり空文字に置き換えずに無理くりやってることになる。C#やJavaに移植した時に変換例外で落ちるよ。 正解は取ってきた文字列からNULLコードをreplaceで空白か空文字に置き換えてからTrimするのが正解。 (Aug 25, 2009 01:07:47 AM)
PG歴25年さん
>CIntは結果的に正しく動いてるだけで、本当はTrimしてから数値化するのが正解。 > >Null文字をスペースなり空文字に置き換えずに無理くりやってることになる。C#やJavaに移植した時に変換例外で落ちるよ。 > >正解は取ってきた文字列からNULLコードをreplaceで空白か空文字に置き換えてからTrimするのが正解。 CIntは「手っ取り早く整数化出来る」という事でご紹介していますが、私自信のプログラムでは タブ文字を取り除いて、Trimして、小数点以下の文字列操作を終えてからInteger.TryParseを使っています。 それらの処理について解説するのは本旨とずれるので省略させて頂いています。 (Aug 25, 2009 07:29:42 AM) |