int GetTime(char* UpdateTime) { int HH = 0;// atoi(&UpdateTime[0]); int mm = 0;//atoi(&UpdateTime[3]); int ss = 0;//atoi(&UpdateTime[6]); if (strlen(UpdateTime) <= 6) { GetUpdateTime_HHmmss(UpdateTime, &HH, &mm, &ss); } else { GetUpdateTime_HH_mm_ss(UpdateTime, &HH, &mm, &ss); } return HH * 10000 + mm * 100 + ss; }
int GetUpdateTime(char* UpdateTime, int* _UpdateTime, int* UpdateMillisec) { // UpdateTime处理 int HH = 0;// atoi(&UpdateTime[0]); int mm = 0;//atoi(&UpdateTime[3]); int ss = 0;//atoi(&UpdateTime[6]); if (strlen(UpdateTime) <= 6) { GetUpdateTime_HHmmss(UpdateTime, &HH, &mm, &ss); } else { GetUpdateTime_HH_mm_ss(UpdateTime, &HH, &mm, &ss); } if (UpdateMillisec) { if (strlen(UpdateTime)>9) { *UpdateMillisec = atoi(&UpdateTime[9]); } else { *UpdateMillisec = 0; } } if (_UpdateTime) { *_UpdateTime = HH * 10000 + mm * 100 + ss; if (*_UpdateTime == 0) { time_t now = time(0); struct tm *ptmNow = localtime(&now); int datetime = ptmNow->tm_hour * 10000 + ptmNow->tm_min * 100 + ptmNow->tm_sec; if (datetime > 1500 && datetime < 234500) *_UpdateTime = datetime; } } return HH; }
void CharTable2CJLB(FieldInfo_STRUCT** ppFieldInfos, char** ppTable, CJLB_STRUCT*** pppResults, void* Client) { *pppResults = nullptr; if (ppTable == nullptr) return; int count = GetRowCountTableBody(ppTable); if (count <= 0) return; CJLB_STRUCT** ppResults = new CJLB_STRUCT*[count + 1](); ppResults[count] = nullptr; *pppResults = ppResults; for (int i = 0; i < count; ++i) { ppResults[i] = new CJLB_STRUCT(); int j = 0; FieldInfo_STRUCT* pRow = ppFieldInfos[j]; while (pRow != 0) { char* t = ppTable[i * COL_EACH_ROW + j]; switch (pRow->FieldID) { case FIELD_CJRQ: strcpy_s(ppResults[i]->CJRQ, t); break; case FIELD_CJSJ: strcpy_s(ppResults[i]->CJSJ, t); break; case FIELD_GDDM: strcpy_s(ppResults[i]->GDDM, t); break; case FIELD_ZQDM: strcpy_s(ppResults[i]->ZQDM, t); break; case FIELD_ZQMC: strcpy_s(ppResults[i]->ZQMC, t); break; case FIELD_MMBZ: strcpy_s(ppResults[i]->MMBZ, t); break; case FIELD_WTLB: strcpy_s(ppResults[i]->WTLB, t); break; case FIELD_CJJG: strcpy_s(ppResults[i]->CJJG, t); break; case FIELD_CJSL: strcpy_s(ppResults[i]->CJSL, t); break; case FIELD_FSJE: strcpy_s(ppResults[i]->FSJE, t); break; case FIELD_SYJE: strcpy_s(ppResults[i]->SYJE, t); break; case FIELD_YJ: strcpy_s(ppResults[i]->YJ, t); break; case FIELD_YHS: strcpy_s(ppResults[i]->YHS, t); break; case FIELD_GHF: strcpy_s(ppResults[i]->GHF, t); break; case FIELD_CJF: strcpy_s(ppResults[i]->CJF, t); break; case FIELD_CJBH: strcpy_s(ppResults[i]->CJBH, t); break; case FIELD_CDBZ: strcpy_s(ppResults[i]->CDBZ, t); break; case FIELD_WTBH: strcpy_s(ppResults[i]->WTBH, t); break; } ++j; pRow = ppFieldInfos[j]; } ppResults[i]->CJRQ_ = atoi(ppResults[i]->CJRQ); ppResults[i]->MMBZ_ = atoi(ppResults[i]->MMBZ); ppResults[i]->CJJG_ = atof(ppResults[i]->CJJG); ppResults[i]->CJSL_ = atoi(ppResults[i]->CJSL); ppResults[i]->SYJE_ = atof(ppResults[i]->SYJE); ppResults[i]->YJ_ = atof(ppResults[i]->YJ); ppResults[i]->YHS_ = atof(ppResults[i]->YHS); ppResults[i]->GHF_ = atof(ppResults[i]->GHF); ppResults[i]->CJF_ = atof(ppResults[i]->CJF); ppResults[i]->CDBZ_ = atoi(ppResults[i]->CDBZ); ppResults[i]->FSJE_ = atof(ppResults[i]->FSJE); if (strstr(ppResults[i]->CJSJ, ":")) { int HH = 0, mm = 0, ss = 0; GetUpdateTime_HH_mm_ss(ppResults[i]->CJSJ, &HH, &mm, &ss); ppResults[i]->CJSJ_ = HH * 10000 + mm * 100 + ss; } else { ppResults[i]->CJSJ_ = atoi(ppResults[i]->CJSJ); } ppResults[i]->WTLB_ = WTLB_str_2_int(ppResults[i]->WTLB); ppResults[i]->Client = Client; } }
void CharTable2WTLB(FieldInfo_STRUCT** ppFieldInfos, char** ppTable, WTLB_STRUCT*** pppResults, void* Client) { *pppResults = nullptr; if (ppTable == nullptr) return; int count = GetRowCountTableBody(ppTable); if (count <= 0) return; WTLB_STRUCT** ppResults = new WTLB_STRUCT*[count + 1](); ppResults[count] = nullptr; *pppResults = ppResults; int col_147 = GetIndexByFieldID(ppFieldInfos, FIELD_ZTSM); for (int i = 0; i < count; ++i) { ppResults[i] = new WTLB_STRUCT(); int j = 0; FieldInfo_STRUCT* pRow = ppFieldInfos[j]; while (pRow != 0) { char* t = ppTable[i * COL_EACH_ROW + j]; switch (pRow->FieldID) { case FIELD_WTRQ: strcpy_s(ppResults[i]->WTRQ, t); break; case FIELD_WTSJ: strcpy_s(ppResults[i]->WTSJ, t); break; case FIELD_GDDM: strcpy_s(ppResults[i]->GDDM, t); break; case FIELD_ZQDM: strcpy_s(ppResults[i]->ZQDM, t); break; case FIELD_ZQMC: strcpy_s(ppResults[i]->ZQMC, t); break; case FIELD_MMBZ: strcpy_s(ppResults[i]->MMBZ, t); break; case FIELD_WTLB: strcpy_s(ppResults[i]->WTLB, t); break; case FIELD_JYSDM: strcpy_s(ppResults[i]->JYSDM, t); break; case FIELD_WTJG: strcpy_s(ppResults[i]->WTJG, t); break; case FIELD_WTSL: strcpy_s(ppResults[i]->WTSL, t); break; case FIELD_CJJG: strcpy_s(ppResults[i]->CJJG, t); break; case FIELD_CJSL: strcpy_s(ppResults[i]->CJSL, t); break; case FIELD_CDSL: strcpy_s(ppResults[i]->CDSL, t); break; case FIELD_WTBH: strcpy_s(ppResults[i]->WTBH, t); break; case FIELD_BJFS: strcpy_s(ppResults[i]->BJFS, t); break; case FIELD_ZTSM: strcpy_s(ppResults[i]->ZTSM, t); break; case FIELD_DJZJ: strcpy_s(ppResults[i]->DJZJ, t); break; case FIELD_BLXX: strcpy_s(ppResults[i]->BLXX, t); break; case FIELD_WTFS: strcpy_s(ppResults[i]->WTFS, t); break; case FIELD_ZJZH: strcpy_s(ppResults[i]->ZJZH, t); break; case FIELD_ZHLB: strcpy_s(ppResults[i]->ZHLB, t); break; } ++j; pRow = ppFieldInfos[j]; } ppResults[i]->WTRQ_ = atoi(ppResults[i]->WTRQ); ppResults[i]->MMBZ_ = atoi(ppResults[i]->MMBZ); ppResults[i]->JYSDM_ = atoi(ppResults[i]->JYSDM); ppResults[i]->WTJG_ = atof(ppResults[i]->WTJG); ppResults[i]->WTSL_ = atoi(ppResults[i]->WTSL); ppResults[i]->CJJG_ = atof(ppResults[i]->CJJG); ppResults[i]->CJSL_ = atoi(ppResults[i]->CJSL); ppResults[i]->DJZJ_ = atof(ppResults[i]->DJZJ); ppResults[i]->WTFS_ = atof(ppResults[i]->WTFS); ppResults[i]->ZHLB_ = atoi(ppResults[i]->ZHLB); // 可能没有,怎么办?那就只好不用它了 ppResults[i]->CDSL_ = atoi(ppResults[i]->CDSL); if (strstr(ppResults[i]->WTSJ, ":")) { int HH = 0, mm = 0, ss = 0; GetUpdateTime_HH_mm_ss(ppResults[i]->WTSJ, &HH, &mm, &ss); ppResults[i]->WTSJ_ = HH * 10000 + mm * 100 + ss; } else { ppResults[i]->WTSJ_ = atoi(ppResults[i]->WTSJ); } if (col_147 >= 0) { // 第一个的字符,并转成数字,其实也可以全走文本比较的方式,但认为这样更快 if (ppResults[i]->ZTSM[1] == '-') { ppResults[i]->ZTSM_ = ppResults[i]->ZTSM[0] - '0'; } else { ppResults[i]->ZTSM_ = ZTSM_str_2_int(ppResults[i]->ZTSM); } } else { // 信达证券没有状态说明,需要模拟计算出来,这种情况下,撤单数量怎么都要有 if (ppResults[i]->CDSL_ > 0) { ppResults[i]->ZTSM_ = ZTSM_AllCancelled; } else if (ppResults[i]->CJSL_ == ppResults[i]->WTSL_) { ppResults[i]->ZTSM_ = ZTSM_AllFilled; } else if (ppResults[i]->CJSL_ == 0) { ppResults[i]->ZTSM_ = ZTSM_New; } else { ppResults[i]->ZTSM_ = ZTSM_PartiallyFilled; } } ppResults[i]->BJFS_ = BJFS_str_2_int(ppResults[i]->BJFS); ppResults[i]->WTLB_ = WTLB_str_2_int(ppResults[i]->WTLB); ppResults[i]->Client = Client; } }