private void button1_Click(object sender, EventArgs e) { int ret = 0; ret = axJVLink1.JVInit("UNKNOWN"); if (ret != 0) { //0以外はエラーとなる MessageBox.Show("初期化に失敗しました。\nReturnCode=" + ret); this.Close(); } String Data = "RACE"; String Time = dateTimePicker1.Value.ToString("yyyyMMdd000000"); int opKind = 1; int ReadCount = 0; int DownloadCount = 0; String LastTime = null; int Status = 0; ret = axJVLink1.JVOpen(Data, Time, opKind, ref ReadCount, ref DownloadCount, out LastTime); #if (DebugFlag == true) Consoal.WriteLine(ret); #endif if (ret != 0) { //エラー toStr.ErrCodetoString(ret); Status = -1; } String buff; int buffSize = 3000; String fName = null; //すでにボタンが押せる状態なら一旦Disbleに DisbleButtonFunction(); returncode.Text = ""; do { if (Status == -1) { //JVOpenエラー break; } ret = axJVLink1.JVRead(out buff, out buffSize, out fName); if (ret == 0) { //ファイル取得の終了(EOF) Status = -1; info1.Text = ""; break; } if (ret == -1 && buff == null) { //1日分のデータ取得完了 continue; } else if (ret <= -2 && buff == null) { toStr.ErrCodetoString(ret); Status = -1; break; } JVData_Struct.RECORD_ID SpecId = new JVData_Struct.RECORD_ID(); SpecId.RecordSpec = buff.Substring(0, 2); String RID = SpecId.RecordSpec; switch (RID) { case "RA": RunRADataFunction(buff); break; case "SE": //RunSEDataFunction(buff); break; default: axJVLink1.JVSkip(); break; } } while (Status == 0 || Status == 1); if (ret != 0) { //エラーコードを画面上に出す。 returncode.Text = toStr.ErrCodetoString(ret); } //ボタンの有効化 for (int idx = 0; idx <= 2; idx++) { EnableButtonFunction(SyncData.getJomei(idx)); } axJVLink1.JVClose(); }
/* JvReadのラッパー関数 */ private int RunJvReadFunc(out String buff, out int buffSize, out String fName, int funcNumber) { int ret; int boolStatus = 0; Boolean eof = false; int racecnt = 0; int skipCount = 0; do { ret = JvMain.ReadJv(out buff, out buffSize, out fName); if (ret == -1) { /* ファイルの切り替え */ if (eof == true) { skipCount++; break; } //2日分の開催データ取得完了 eof = true; JvMain.SkipJv(); } else if (buff == null) { break; //エラー } else if (ret == 0) { if (eof == true) { /* ファイル読み込みの終了 */ break; } else { skipCount++; //3回以上スキップしたら終了する。 JvMain.SkipJv(); } } else if (ret < 0) { /* -2以下の場合はエラー*/ boolStatus = -1; } else { /* 正常のデータ */ eof = false; JVData_Struct.RECORD_ID rec = new JVData_Struct.RECORD_ID(); String RecordSpec = buff.Substring(0, 2); switch (RecordSpec) { case "RA": /* レース情報詳細 */ /*JVData_Struct.JV_RA_RACE RaceData = new JVData_Struct.JV_RA_RACE();*/ RaceData.SetDataB(ref buff); RunJvReadFuncToRAData(RaceData, funcNumber); // MessageBox.Show(RaceData.RaceInfo.Hondai); break; case "SE": /* 馬毎レース情報 */ RaceUmaData.SetDataB(ref buff); tmpRaceData.id.Waku = Int32.Parse(RaceUmaData.Wakuban); tmpRaceData.id.Umaban = Int32.Parse(RaceUmaData.Umaban); tmpRaceData.id.Bamei = RaceUmaData.Bamei; tmpRaceData.id.Jokkey = RaceUmaData.KisyuRyakusyo; tmpRaceData.id.Omosa = Double.Parse(RaceUmaData.Futan); tmpRaceData.Kyakushitu = RaceUmaData.KyakusituKubun; tmpRaceData.sex = Func.ChgSexCdToString(RaceUmaData.SexCD); tmpRaceData.Year = Int32.Parse(RaceUmaData.Barei); ArrayRaceData.Add(tmpRaceData); break; /* 競走馬マスタ取得 → dataspecをRCOVで指定するときに処理される */ case "UM": JVData_Struct.JV_UM_UMA UmaMaster = new JVData_Struct.JV_UM_UMA(); UmaMaster.SetDataB(ref buff); RunJvReadMasterFunc(UmaMaster); break; default: JvMain.SkipJv(); break; } } } while (boolStatus == 0 && skipCount < 3); if (boolStatus == -1) { CheckErrorCode(ret); } return(ret); }