株価更新の処理が失敗してしまう
いつも管理していただきありがとうございます。 以下に詳細内容を記載しました。
■現象 株価更新をしようとすると、処理途中で例外エラーが発生してしまう。
■原因とエラー箇所 銘柄情報(index.txt)のダウンロード処理は正常に完了します。 続いて、その再読み込み処理内( BrandData.cs/Load() )で、株数(文字列)をintに変換する際に、空文字をintにキャストしようとして例外エラーが出るみたいです。
「http://protra.sourceforge.jp/data/index.txt.lzh」
のテキスト内容
date=20230601 0,,, ★←ここです。 1301,極洋,TP,100,S:20160928:0.1 1305,iFreeETF TOPIX(年1回決算型),T,10 ~(省略)~
(※ソースコードタブのリポジトリは、見えませんでしたのでリンク無し) Protra.Lib.Data.BrandData.cs
public void Load() { ~(省略)~ reader.ReadLine(); // @dateを読み飛ばす。 string line; while ((line = reader.ReadLine()) != null) { var entries = line.Split(','); var brand = new Brand { Code = entries[0], Name = entries[1].Replace("ホールディングス", "HD"), Market = entries[2], Unit = int.Parse(entries[3]) ★←ここです。 }; ~(省略)~
■対応A ユーザー側で毎回 index.txt を手動修正する。 一回目の株価更新処理を行った後で、銘柄コード0の1行を削除して上書き保存します。 再度、株価更新処理を行うことで、各銘柄の株価データの更新から始まるのでうまくいきます。
■対応B 不正な銘柄情報の場合は無視するように、ソースコード修正をおこないます。
Protra.Lib.Data.BrandData.cs
public void Load() { ~(省略)~ var entries = line.Split(','); if (entries.Any(x => string.IsNullOrWhiteSpace(x))) ★←ここです。if 文で entries[3] が空だったら無視とかでもいいと思いました。 continue; var brand = new Brand { Code = entries[0], Name = entries[1].Replace("ホールディングス", "HD"), Market = entries[2], Unit = int.Parse(entries[3]) }; ~(省略)~
以上、お知らせでした。 もしも、私の環境だけで出る現象でしたらすみません。
連絡ありがとうございます。
index.txtの生成ミスでゴミが入っていたので直しました。
更新処理が無事に完了しましたし、 index.txt の不正データも含まれていないことを確認できました。 ご対応ありがとうございました!
いつも管理していただきありがとうございます。
以下に詳細内容を記載しました。
■現象
株価更新をしようとすると、処理途中で例外エラーが発生してしまう。
■原因とエラー箇所
銘柄情報(index.txt)のダウンロード処理は正常に完了します。
続いて、その再読み込み処理内( BrandData.cs/Load() )で、株数(文字列)をintに変換する際に、空文字をintにキャストしようとして例外エラーが出るみたいです。
「http://protra.sourceforge.jp/data/index.txt.lzh」
のテキスト内容
(※ソースコードタブのリポジトリは、見えませんでしたのでリンク無し)
Protra.Lib.Data.BrandData.cs
■対応A
ユーザー側で毎回 index.txt を手動修正する。
一回目の株価更新処理を行った後で、銘柄コード0の1行を削除して上書き保存します。
再度、株価更新処理を行うことで、各銘柄の株価データの更新から始まるのでうまくいきます。
■対応B
不正な銘柄情報の場合は無視するように、ソースコード修正をおこないます。
Protra.Lib.Data.BrandData.cs
以上、お知らせでした。
もしも、私の環境だけで出る現象でしたらすみません。