JRA公式競馬データ配信サービス JRA-VAN Data Lab.

JRA-VAN DataLab.

競馬ソフト開発コーナー

JV-Link 質問箱

新着記事 リストに戻る
タイトルRe: エリザベス女王杯
記事No6483   [関連記事]
投稿日: 2019/11/18(Mon) 13:12
投稿者JRA-VANソフトサポート
JRA-VANソフトサポート 山川です。
DataLab.サービスをご利用頂きまして誠にありがとうございます。

> お世話になります。エリザベス女王杯の月曜日(11月11日14:00)のデータですが、
> DLしたところ何故か確定順位とタイムが落ちてきませんでした。
> 前後のレースは問題はありませんでした。また速報では問題ありませんでした。

エリザベス女王杯(2019年11月10日京都11レース)
(データ作成日2019年11月11日)の
蓄積系の馬毎レース情報の確定着順、走破タイムについて、DLを行い、
確認いたしました。
こちらの確認では、確定着順、走破タイムともに、前後のレースと同様に問題なく設定されております。

なお、JRA-VAN が提供するデータを検証していただく事を目的として、
DataLab.検証ツールをご提供させていただいております。
データをご確認いただきたい場合にご活用ください。

DataLab.検証ツールについては以下にございます。
https://jra-van.jp/dlb/sdv/pgm.html
「DataLab.検証ツール」でご検索ください。
※ページの下部にリンクがございます。

以上、よろしくお願い致します。

タイトルエリザベス女王杯
記事No6482   [関連記事]
投稿日: 2019/11/12(Tue) 19:24
投稿者HRPTV5C   <nba01272@nifty.com>
参照先http://hrptv5c.com/
お世話になります。エリザベス女王杯の月曜日(11月11日14:00)のデータです
が、DLしたところ何故か確定順位とタイムが落ちてきませんでした。前後のレー
スは問題はありませんでした。また速報では問題ありませんでした。あと私のソ
フトでは金土曜日と月曜日の結果が違っていました。これもエリザベス女王杯以
外は全く同じ結果でした。私のソフトのバグのような気もしますが、エリザベス
女王杯以外は全く正常でしたので一応元データの確認ができましたら幸いです。

タイトルRe: 追伸
記事No6478   [関連記事]
投稿日: 2019/11/06(Wed) 13:15
投稿者JRA-VANソフトサポート
JRA-VANソフトサポート 吉岡です。
DataLab.サービスをご利用頂きまして誠にありがとうございます。

回答が遅くなり大変申し訳ございません。

こちらでm_TotalReadFilesizeプロパティの検証を行ったところ、
ご指摘の通り、4194303以上の値が返されないことを確認致しました。

修正に関しましては今後のバージョンアップにて行ってまいります。
ご不便をお掛けいたしますが、しばらくお待ちいただけますようお願い申し上
げます。

今後ともJRA-VANをよろしくお願いいたします。
ご指摘ありがとうございました。

タイトルRe^4: 解決しました
記事No6476   [関連記事]
投稿日: 2019/11/01(Fri) 02:50
投稿者YM31
>
> ・Buffにarrayインスタンスを格納するように変更
> >    Object^ Buff = gcnew Object;
> →   Object^ Buff = gcnew array<Byte>(0);
>

上記ご案内いただいた方法で解決致しました。
やはりこちらの理解が不足していた様で、
大変お手数をお掛け致しました。
丁寧なご対応をいただき、
誠にありがとうございました。


以上

タイトルRe^3: C++でJVGets()を使うヒントをご教示ください
記事No6475   [関連記事]
投稿日: 2019/10/31(Thu) 17:00
投稿者JRA-VANソフトサポート
JRA-VANソフトサポート 山川です。
DataLab.サービスをご利用頂きまして誠にありがとうございます。

ご回答ありがとうございます。
お試しいただいた2点の結果について、承知いたしました。

以下の方法がございますので、ご確認をお願いいたします。

・Buffにarrayインスタンスを格納するように変更
>   private: void ReadData(void)
>   {
>    int ReturnCode;
>    Object^ Buff = gcnew Object;
>    int buffSize = 150000;
>    String^ fName;
>
>    ReturnCode = m_JVLink1->JVGets(Buff, buffSize, fName);

上記ソースについて、以下の通り変更の上、実行していただけますでしょうか。
>    Object^ Buff = gcnew Object;
→   Object^ Buff = gcnew array<Byte>(0);


以上、よろしくお願い致します。

タイトルRe^2: C++でJVGets()を使うヒントをご教示ください
記事No6474   [関連記事]
投稿日: 2019/10/30(Wed) 19:50
投稿者YM31
ご質問のありました点について、
以下、文中にて回答しております。
よろしくお願い致します。

>
> ・BuffにObjectインスタンスを格納しないように変更する
>

実を言いますと、
初めはご依頼の方式(インスタンスを作成せず宣言のみ)で、
プログラム作成・実行しておりましたが、うまくいかないので、
インスタンスを作成してみたところ質問の状況となった次第です。
ちなみに「うまくいかない」とは以下のとおりです。

1.例外エラーは発生しません。
 (プログラム実行としては正常終了する)

2.しかし期待した処理結果は得られず、処理対象データが存在
  しないかのように振る舞います。このため、プログラムを
  スッテプ実行して変数(Object^ Buff)の内容の変遷を追いかけ
  ましたところ、宣言した時点で nullptr であり、
  JVGets() 実行後も nullptr のままで空のように見えます。
  ※nullptrであるかは念のため JVGets() 実行の次ステップで
   If文(Buff == nullptr)を仕掛けて判断しています。

3.2の補足ですが、
  3−1.RetrunCodeに処理バイト数は返されます。
  3−2.処理対象ファイル名についても返されます。
  3−3.buffSize は値を増やしたりしても変わりません。

>
> ・JVGetsをJVReadに変更する
>

JVRead()については、
期待した結果が得られることを確認しました。
特に問題はありません。


以上

タイトルRe: C++でJVGets()を使うヒントをご教示ください
記事No6473   [関連記事]
投稿日: 2019/10/30(Wed) 18:49
投稿者JRA-VANソフトサポート
JRA-VANソフトサポート 山川です。
DataLab.サービスをご利用頂きまして誠にありがとうございます。

> C++(Visual Studio 2019)で開発を始めた者ですが、
> 以下の状況が発生しており困っております。
> こちらの理解・知識不足が起因していると思いますので、
> お手数ですが、解決のヒントなど頂けましたら幸いです。
> よろしくお願い致します。

ソースを全て確認できていないため、わかりかねる部分もございますが、
確認のため、以下2点について、お試しいただけますでしょうか。

・BuffにObjectインスタンスを格納しないように変更する
>   private: void ReadData(void)
>   {
>    int ReturnCode;
>    Object^ Buff = gcnew Object;
>    int buffSize = 150000;
>    String^ fName;
>
>    ReturnCode = m_JVLink1->JVGets(Buff, buffSize, fName);

上記ソースについて、以下の通り変更の上、実行していただけますでしょうか。
>    Object^ Buff = gcnew Object;
→   Object^ Buff;
※”= gcnew Object”を削除

・JVGetsをJVReadに変更する
>   private: void ReadData(void)
>   {
>    int ReturnCode;
>    Object^ Buff = gcnew Object;
>    int buffSize = 150000;
>    String^ fName;
>
>    ReturnCode = m_JVLink1->JVGets(Buff, buffSize, fName);

>    Object^ Buff = gcnew Object;

上記ソースについて、以下の通り変更の上、実行していただけますでしょうか。
>    Object^ Buff = gcnew Object;
→    String^ Buff;
※Buffの型をObjectからStringに変更

>    ReturnCode = m_JVLink1->JVGets(Buff, buffSize, fName);
→    ReturnCode = m_JVLink1->JVRead(Buff, buffSize, fName);
※JVGetsをJVReadに変更


以上、よろしくお願い致します。

タイトルC++でJVGets()を使うヒントをご教示ください
記事No6472   [関連記事]
投稿日: 2019/10/27(Sun) 12:24
投稿者YM31
C++(Visual Studio 2019)で開発を始めた者ですが、
以下の状況が発生しており困っております。
こちらの理解・知識不足が起因していると思いますので、
お手数ですが、解決のヒントなど頂けましたら幸いです。
よろしくお願い致します。

【発生している現象】※デバッガーの表示から抜粋
マネージド デバッグ アシスタント 'InvalidVariant'
アンマネージ VARIANT からマネージ オブジェクトへの変換中に、
無効な VARIANT が検出されました。
無効な VARIANT を CLR へ渡すと、
予期しない例外、破損、またはデータの損失を発生させる可能性が
あります。

【現象発生までの経緯】

1.プロジェクト作成からフォーム作成(JVLinkコントロール配置)
  までJRA−VAN Data Lab.SDK開発ガイド
  (イベント C++)2017年年6月6日第2.0.0版を
  参考に作成実施。

※以降の手順はJRA−VAN Data Lab.SDK
 Windows 版 JV−Linkインターフェース仕様書
 2017年1月24日第4.5.1版を参考に実施。

2.フォームへボタンコントロールを配置しクリックイベント
  によるレース情報(蓄積系データ/データ種別ID:RACE)を
  取得するコードを記述。
  <コード概略>
  JVOpen()実行に必要なパラメータの初期化
  →JVOpen()の実行
  →戻り値の検査
  →戻り値が0のときダウンロード済ファイルを
   読み込む関数 ReadData() を実行。
  
3.ReadData()の実行時に現象発生
  <コード記述>
  private: void ReadData(void)
  {
   int ReturnCode;
   Object^ Buff = gcnew Object;
   int buffSize = 150000;
   String^ fName;

   ReturnCode = m_JVLink1->JVGets(Buff, buffSize, fName);
   ↑この行が例外エラーとなる。
   ※注記1:デバッグ目的での記述で本来はループ処理
   ※注記2:JVGets()の第1引数は System::Object^ の型が
        要求される為、上記のようなコードとなりました
   ※注記3:第1引数のところでエラーが起きている様です
 

   ・・・(以下省略)
  }


【開発環境】※バージョン情報からの抜粋
Microsoft Visual Studio Community 2019
Version 16.3.6
VisualStudio.16.Release/16.3.6+29418.71
Microsoft .NET Framework
Version 4.7.03190

インストールされているバージョン:Community

Visual C++ 2019 00435-60000-00000-AA087
Microsoft Visual C++ 2019


以上

タイトル追伸
記事No6470   [関連記事]
投稿日: 2019/10/19(Sat) 19:25
投稿者taka37
さらに検証ツールでも同様の結果です。

DataSpec="RACE"
FromTime="20140101000000"
Option=セットアップ
を指定してファイル取得をクリックすると
TotalReadFilesize=4194303
となります。

取得したファイル一覧のFS値を合計すると5,091,955,744です。
1024で割った値4972613がTotalReadFilesizeのはずなんですが。

タイトルget_m_TotalReadFilesizeの仕様について
記事No6469   [関連記事]
投稿日: 2019/10/18(Fri) 03:38
投稿者taka37
get_m_TotalReadFilesizeの仕様について

このプロパティで返ってくる値ですが、取得するデータの量が一定量を超える
と4194303固定となります。

どうやらデータ量がunsigned longの限界値(4294967295)を超えるとそれを1024
で割った値(10bitシフトした値)=4194303が返ってきているようです。

バグのように見えますが、何か私の取得手順に問題があるのでしょうか?
ちなみにvbでコントロールを貼り付けてやっても、C++でIDISPATCHのInvokeメ
ソッドを使用しても同じ結果になります。
dataspac="RACE"、fromdate="20140101000000"で超えま
す。

ご回答をよろしくお願いいたします。

ウィンドウを閉じる