📄 cl_data.c
字号:
#include <windows.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <io.h>#include "dbf_data.h"#include "hq.h"#include "sv_hq.h"#include "data.h"#include "cl_hq.h"#include "cl_data.h"extern BOOL run_cancelled;extern HWND ghWndMain;extern int date_num, tim;extern void MsgLocal(LPSTR msg);extern BOOL ErrMsg(HWND, LPSTR);extern int UDPBlockingHook(void);extern void MsgRecv(char far *msg);//extern long oldCjss[2];extern char szDataPath[128];long zs_times[2][20];BOOL fWrited[2] ={FALSE, FALSE};int WriteHqAll(int jys){ if(WriteHqData(jys) <0) return -1; if(WriteMmpData(jys) <0) return -1; if(WriteMaxMinData(jys) <0) return -1; return 0;}int WriteHqData(int jys){ _llseek(hfHq[jys], 0, SEEK_SET); _lwrite(hfHq[jys], (char *)&HqData[jys].recCount, sizeof(short)); if(_hwrite(hfHq[jys], (char *)HqData[jys].lpPreData, (long)HqData[jys].recCount*sizeof(HQ_PRE_DATA)) !=(long)(HqData[jys].recCount*sizeof(HQ_PRE_DATA))) { ErrMsg(ghWndMain, "Error write hqdata"); return -1; } if(_hwrite(hfHq[jys], (char *)HqData[jys].lpRefData, (long)HqData[jys].recCount*sizeof(HQ_REF_DATA)) !=(long)(HqData[jys].recCount*sizeof(HQ_REF_DATA))) { ErrMsg(ghWndMain, "Error write hqdata"); return -1; } CreateLzwFile(jys); return 0;}////////////////////////////////////////////////////////////////////////////Function:to reduce transfer time between server and client,we must build// compress data.this prog compress main mass data(szhq.dat.shhq.dat)//Para :None//Return :if successful return 0,otherwise return -1//Writer :lym//Create :1997/08/24//////////////////////////////////////////////////////////////////////////int CreateLzwFile(int jys){ char temp[256]; //,tmp[256]; OFSTRUCT os; HQ_REF_DATA_V202 DataV202; long i; int lzw; //for(jys=0;jys<2;jys++) //{ if(HqData[jys].recCount==0) return(-1); if(jys==0) sprintf(temp,"%s\\hqdata\\szhq.202",szDataPath); else sprintf(temp,"%s\\hqdata\\shhq.202",szDataPath); if((lzw=OpenFile(temp,&os,OF_WRITE|OF_SHARE_DENY_NONE))==HFILE_ERROR) if((lzw=OpenFile(temp,&os,OF_WRITE|OF_SHARE_DENY_NONE|OF_CREATE))==HFILE_ERROR) return(-1); _lwrite(lzw, (char *)&HqData[jys].recCount, sizeof(short)); for(i=0;i<HqData[jys].recCount;i++) { if(run_cancelled) break; memset((char*)&DataV202,0,sizeof(HQ_REF_DATA_V202)); strcpy(DataV202.zqdm,HqData[jys].lpPreData[i].zqdm); strcpy(DataV202.zqmc,HqData[jys].lpPreData[i].zqmc); sprintf(temp,"%7.2f",HqData[jys].lpRefData[i].zdjg*100.00); DataV202.zdjg =atol(temp); sprintf(temp,"%7.2f",HqData[jys].lpPreData[i].zrsp*100.00); DataV202.zrsp =atol(temp)-DataV202.zdjg; sprintf(temp,"%7.2f",HqData[jys].lpPreData[i].jrkp*100.00); DataV202.jrkp =atol(temp)-DataV202.zdjg; sprintf(temp,"%7.2f",HqData[jys].lpRefData[i].zgjg*100.00); DataV202.zgjg =atol(temp)-DataV202.zdjg; sprintf(temp,"%7.2f",HqData[jys].lpRefData[i].zdjm*100.00); DataV202.zdjm =atol(temp)-DataV202.zdjg; sprintf(temp,"%7.2f",HqData[jys].lpRefData[i].zgjm*100.00); DataV202.zgjm =atol(temp)-DataV202.zdjg; sprintf(temp,"%7.2f",HqData[jys].lpRefData[i].zjcj*100.00); DataV202.zjjg =atol(temp)-DataV202.zdjg; sprintf(temp,"%7.2f",HqData[jys].lpRefData[i].wb*100.00); DataV202.wb =atol(temp); DataV202.cjss =HqData[jys].lpRefData[i].cjss; DataV202.npzl =HqData[jys].lpRefData[i].npzl; DataV202.cjje =HqData[jys].lpRefData[i].cjje; _lwrite(lzw,(char *)&DataV202,sizeof(HQ_REF_DATA_V202)); } _lclose(lzw); return TRUE; }int CreateLzwMemData(int jys){ char temp[256]; long i; if(HqData[jys].recCount==0) return(-1); *LzwData202[jys].recCount =HqData[jys].recCount; for(i=0;i<HqData[jys].recCount;i++) { if(run_cancelled) break; strcpy(LzwData202[jys].lpData202[i].zqdm, HqData[jys].lpPreData[i].zqdm); strcpy(LzwData202[jys].lpData202[i].zqmc, HqData[jys].lpPreData[i].zqmc); sprintf(temp,"%7.2f",HqData[jys].lpRefData[i].zdjg*100.00); LzwData202[jys].lpData202[i].zdjg =atol(temp); sprintf(temp,"%7.2f",HqData[jys].lpPreData[i].zrsp*100.00); LzwData202[jys].lpData202[i].zrsp = atol(temp)-LzwData202[jys].lpData202[i].zdjg; sprintf(temp,"%7.2f",HqData[jys].lpPreData[i].jrkp*100.00); LzwData202[jys].lpData202[i].jrkp =atol(temp)-LzwData202[jys].lpData202[i].zdjg; sprintf(temp,"%7.2f",HqData[jys].lpRefData[i].zgjg*100.00); LzwData202[jys].lpData202[i].zgjg =atol(temp)-LzwData202[jys].lpData202[i].zdjg; sprintf(temp,"%7.2f",HqData[jys].lpRefData[i].zdjm*100.00); LzwData202[jys].lpData202[i].zdjm =atol(temp)-LzwData202[jys].lpData202[i].zdjg; sprintf(temp,"%7.2f",HqData[jys].lpRefData[i].zgjm*100.00); LzwData202[jys].lpData202[i].zgjm =atol(temp)-LzwData202[jys].lpData202[i].zdjg; sprintf(temp,"%7.2f",HqData[jys].lpRefData[i].zjcj*100.00); LzwData202[jys].lpData202[i].zjjg =atol(temp)-LzwData202[jys].lpData202[i].zdjg; sprintf(temp,"%7.2f",HqData[jys].lpRefData[i].wb*100.00); LzwData202[jys].lpData202[i].wb =atol(temp); LzwData202[jys].lpData202[i].cjss =HqData[jys].lpRefData[i].cjss; LzwData202[jys].lpData202[i].npzl =HqData[jys].lpRefData[i].npzl; LzwData202[jys].lpData202[i].cjje =HqData[jys].lpRefData[i].cjje; } return TRUE; }int WriteDpData(int jys){ _llseek(hfDp, jys*sizeof(DpData[jys]), SEEK_SET); _lwrite(hfDp, (char*)&DpData[jys], sizeof(DpData[jys])); return 0;}int WriteMmpData(int jys){ _llseek(hfMmp[jys], 0, SEEK_SET); if(_hwrite(hfMmp[jys], (char *)MmpData[jys].lpMmp, (long)sizeof(MMP)*HqData[jys].recCount) !=(long)sizeof(MMP)*HqData[jys].recCount) { ErrMsg(NULL, "Write mmp failed"); return -1; } return 0;}int WriteMaxMinData(int jys){ _llseek(hfMaxMin[jys], 0, SEEK_SET); _lwrite(hfMaxMin[jys], (char *)&MaxMinData[jys], sizeof(MAXMIN_DATA)*2); return 0;}long max_l(long val1, long val2){ return (val1>val2)? val1:val2;}long min_l(long val1, long val2){ return (val1<val2)? val1:val2;}float max_f(float val1, float val2){ return (val1>val2)? val1:val2;}float min_f(float val1, float val2){ return (val1<val2)? val1:val2;}////////////////////////////////////////////////////功能 :读取分时数据文件,初始化内存分时数据头部信息//参数 :// jys---交易所编码//返回码 :// 0 ---成功// -1 ---失败//修改日期 :1997/10/15 int CheckGraHead(int jys){ int i; char temp[128]; HFILE hFile; OFSTRUCT os; wsprintf(temp, "检查分时数据头:%d", jys); MsgLocal(temp); for(i =0; i<HqData[jys].recCount; i++) { while(UDPBlockingHook()); if(run_cancelled) break; wsprintf(temp, "%s\\%s.dat", GraphData[jys].szGraPath, HqData[jys].lpPreData[i].zqdm); hFile =OpenFile(temp, &os, OF_SHARE_DENY_NONE|OF_READ); //打开文件失败,必需重新初始化内存分时数据头部信息 if(hFile ==HFILE_ERROR) goto reset_values; else { //该内存分时数据头部信息读不出,必需重新初始化 if(_lread(hFile, &GraphData[jys].lpGraHead[i], sizeof(GRA_HEAD)) !=sizeof(GRA_HEAD)) goto reset_values; //该内存分时数据头部信息日期错,必需重新初始化 if(GraphData[jys].lpGraHead[i].dateNum !=date_num) goto reset_values; _lclose(hFile); //至此说明该内存分时数据头部信息正确,但如存在成交量查,则必须调整 //内存行情数据的内盘总量 HqData[jys].lpRefData[i].npzl =GraphData[jys].lpGraHead[i].npzl +(HqData[jys].lpRefData[i].cjss-GraphData[jys].lpGraHead[i].npzl -GraphData[jys].lpGraHead[i].wpzl)/2; continue; } reset_values: HqData[jys].lpRefData[i].npzl =HqData[jys].lpRefData[i].cjss/2; memset(&GraphData[jys].lpGraHead[i], 0, sizeof(GRA_HEAD)); GraphData[jys].lpGraHead[i].dateNum =date_num; GraphData[jys].lpGraHead[i].zrsp =HqData[jys].lpPreData[i].zrsp; GraphData[jys].lpGraHead[i].zgjg =GraphData[jys].lpGraHead[i].zdjg =HqData[jys].lpRefData[i].zjcj-HqData[jys].lpPreData[i].zrsp; if(hFile ==HFILE_ERROR) { hFile =OpenFile(temp, &os, OF_SHARE_DENY_NONE|OF_CREATE|OF_READWRITE); if(hFile ==HFILE_ERROR) continue; } _lclose(hFile); } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -