用来代替 REPORT_STRUCT 结构的。
把用到的REPORT_STRUCT结构都强行替换到REPORT_STRUCT_EX结构即可正常使用
REPORT_STRUCT_EX* report = (REPORT_STRUCT_EX*)stData.m_pReport;我试了一下,是这样转换的,但是运行时候软件会崩溃,取出来的结果在附件里面,数据肯定不对。
是不是我用错了,有没有例子可以参考
此主题相关图片如下:捕获.png

我是想取REPORT_STRUCT_EX里面涨跌停板的数据,写到csv文件
下面是我的代码:
void CMainWindowDlg::OnButton1Gedata()
{
PCALCINFO stData = {0};
stData.m_dataType = TICK_DATA;//单笔
stData.m_bIsPow = 0; //是否复权
stData.m_wMarket = 'JZ';
strcpy(stData.m_szLabel,"IF00");
CString filename = "E:\\1.csv";
if(g_pMainFormework->GetDataInfo(&stData))
{
if(stData.m_pSubsection != NULL)
{
ofstream ofs(filename);
ofs << "时间" << ","
<< "涨停板" << ","
<< "跌停板" << endl;
REPORT_STRUCT_EX* report = (REPORT_STRUCT_EX*)stData.m_pReport;
for(int i = 0; i < stData.m_nNumSubData; i++)
{
ofs << report[i].m_time << ","
<< report[i].m_upperLimitPrice << ","
<< report[i].m_lowerLimitPrice << endl;
}
ofs.close();
}
}
}
谢谢!附件是运行结果
此主题相关图片如下:捕获.png

看到您的代码了,你的理解是有问题的,通过PCALCINFO结构拿到的stData.m_pReport这个指针是只有当前及时报价数据,没有历史数据的,因此你不能用report[i].m_upperLimitPrice 这样的数组方法去遍历的,会造成内存越界的