以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  C++二次开发数据获取  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=147707)

--  作者:ydding
--  发布时间:2017/2/13 16:53:00
--  C++二次开发数据获取
C++二次开发:AddinDemo里面REPORT_STRUCT_EX这个数据结构的数据怎么获取,谢谢!
--  作者:王锋
--  发布时间:2017/2/13 17:44:22
--  

用来代替 REPORT_STRUCT 结构的。

把用到的REPORT_STRUCT结构都强行替换到REPORT_STRUCT_EX结构即可正常使用


--  作者:ydding
--  发布时间:2017/2/14 15:42:18
--  
REPORT_STRUCT_EX* report = (REPORT_STRUCT_EX*)stData.m_pReport;
我试了一下,是这样转换的,但是运行时候软件会崩溃,取出来的结果在附件里面,数据肯定不对。
是不是我用错了,有没有例子可以参考
图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看

--  作者:王锋
--  发布时间:2017/2/14 20:07:36
--  

可否给出一个稍微具体一些的测试代码呢?

您只给这2句代码让我们如何帮您解决问题呢?


--  作者:ydding
--  发布时间:2017/2/15 10:03:48
--  
我是想取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
图片点击可在新窗口打开查看

--  作者:王锋
--  发布时间:2017/2/15 12:13:58
--  
看到您的代码了,你的理解是有问题的,通过PCALCINFO结构拿到的stData.m_pReport这个指针是只有当前及时报价数据,没有历史数据的,因此你不能用report[i].m_upperLimitPrice 这样的数组方法去遍历的,会造成内存越界的