元野良猫のタキシードねこ「るひ・ルヒ・RUHI」との日々の生活

⑧JRA-VAN用競馬ソフトを作る

CATEGORYJRA-VAN
1.「競馬ソフト開発体験教室


〇ステップ3 レッスン開始!
<<< Lesson.1 >>>サービスキーを入力する仕組みを用意する
<<< Lesson.2 >>>JV-Dataをダウンロードする



Lesson.3
JV-Dataの内容を読み出す

前回ダウンロードしたJV-Dataを読み込む処理を盛り込んでみましょう。
さらに、JRA-VAN SDKに同梱されているJV-Data構造体を用いて、
読み込んだJV-Dataを「意味のある区切り」ごとに切り出して表示してみましょう。


【 今回の目標 】
ダウンロードしたJV-Dataを読み出す。
読み出したJV-Dataを「意味のある区切り」で切り出し、表示する。
(具体的には、取得したJV-Dataのうち、レース詳細(レコード種別ID「RA」)情報の一部(開催年、開催月日、競馬場コード、開催回、開催日、レース番号、競走名略称10文字)をRichTextBoxに表示します。 )

JV-Linkに実装されている以下のメソッドの使い方を理解する。
・JVReadメソッドで取得したJV-Dataを読み出す
 【構文】
 Long JVRead( String 型 buff , Long 型 size , String 型 filename );

 【パラメータ】
 buff
  呼出側で用意したデータ格納バッファを指定します。
  1行単位で読み出しますので改行コード (0x0d,0x0a)を含めたレコードデータが収容可能なサイズ+1(ストリング終端文字 NULL)を用意します。

 size
  呼出側で用意したデータ格納バッファにコピーするデータの長さを指定します。
  この値がレコード長よりも小さい場合には残りのデータは切り捨てられ、データ格納バッファの最後の1バイト がストリング終端文字 NULL となります。

 filename
  現在読み込み中のファイル名が JVRead から返されます。


 【戻り値】
 正常にレコードを読み込んだ場合はバッファーにセットされたデータのバイト数が返ります。
 読み込んでいるファイルが次のファイルに切り替わる際には-1が返ります。
 全てのファイルを読み終わると0が返ります。
 エラーが発生した場合にはエラーの理由コードとして負の数が返されます。
 (「3.コード表」参照)
 -1の戻り値は実際には物理ファイルの終わりに返されるので、全てのファイルの終わりには一度 -1が返った後、次の呼び出しで0が返されます。

 【解説】
 JVOpen / JVRTOpen で準備したJV-Data を現在のファイルポインタから1行分読み出します。
 JVOpen / JVRTOpen を行なわずに JVRead メソッドを呼び出すとエラーが返ります。

 JVOpen ではデータ種別IDが複数指定できるため、JVRead メソッドは物理的には複数のファイルであっても1つのファイルであるかのように連続してデータを読み出します。
 ただし、ファイル間をまたぐごとに戻り値としてファイル切り替わり(-1)が返り、全てのファイルを読み終わった際に戻り値として EOF(0)が返ります。

 例えば「2002 年 11 月 10 日以降現在までの RACE データ」を指定して読み出した場合に、レース詳細データが 36 件存在したとすると1回目から 36 回目の呼出しまではレース詳細のレコードが 1行ずつバッファにセットされ、37 回目の呼び出しでファイル切り替わり(-1)が返されます。38 回目以降の呼出しには馬毎レース情報がセットされます。
 全てのレコードが無くなった時点で EOF(0)が返されます。

 【補足】
 JVRead では、渡されたデータ格納バッファは JV-Link 内にて解放し、新たに確保したバッファを buff に割り当てられます。


【 やってみよう 】
 ① Lesson-2までを実装したフォーム(frmMain)を含むプロジェクトを開きます。

文字列関数 (Visual Basic)
配列(Visual Basic)
Mid 関数 (Visual Basic)

デバックモードで正常稼働するが、相変わらず警告が出る!
警告 1 変数 'strLastFileTimestamp' は、値が割り当てられる前に参照によって渡されています。Null 参照の例外が実行時に発生する可能性があります。
警告 2 変数 'RaceInfo' は、値が割り当てられる前に参照によって使用されています。Null 参照の例外が実行時に発生する可能性があります。構造体、またはすべての参照メンバーが使用前に初期化されていることを確認してください。


Lesson.4 >>>
JV-Dataのダウンロード/読み込み進捗状況を表示する



COMMENTS

0 Comments

There are no comments yet.

REPLY

Leave a reply