Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共6 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:序列模式问题

1楼
adam_wang 发表于:2012/3/17 14:52:31

我的公式运行在序列模式下, 通过调试发现序列变量下标为1的变量一直无法使用, 而且在调试模式下一直显示为"空", 而不想其他下标预设值显示为0.000, 请问是何原因?

2楼
王锋 发表于:2012/3/17 16:10:07
代码贴过来看看
3楼
adam_wang 发表于:2012/3/17 17:22:09

找到原因了,  不论在DLL中对pData->m_pResultBuf[0]如何赋值,

只要return 1就会造成序列变量下标1中的内容为空,

如果return 0就不会出现问题,序列变量下标1中的内容为dll中的赋值内容。

请问,对于dll的返回值,具体包括哪些?有何意义?

 

另外,再请教个问题:序列模式是否无法使用DLL中定义的全局变量,每次调用时全局变量的内容好像又回到初始值了?

4楼
王锋 发表于:2012/3/17 18:26:37

返回的值表示的是返回的数组的有效下标,你返回1当然表示从第二个数组才有效的了。

你可能根本就没有仔细看过DLL公式的开发文档,这里给你摘抄部分

 

////////////////////////////////////////////////////
/* 函数输出

__declspec(dllexport) int xxxxxxxx(CALCINFO* pData);

1.函数名称需全部大写.
2.函数必须以上述形式声明,请用实际函数名称替代xxxxxxxx;
 对于C++程序还需包括在 extern "C" {   } 括号中.
3.函数计算结果用pData->m_pResultBuf带回.
4.函数返回-1表示错误或全部数据无效,对于序列模式返回第一个有效值位置,即:
 m_pResultBuf[返回值] -- m_pResultBuf[m_nNumData-1]间为有效值.逐K线模式返回值大于等于0均表示成功

*/

 

 

DLL的全局变量你没描述清楚,如果猜的没错的话,你在 工具菜单-》选项-》勾选“DLL加载内存驻留模式”即可

5楼
adam_wang 发表于:2012/3/17 19:43:59
不好意思呀,太久没看资料,全忘了。
6楼
王锋 发表于:2012/3/18 20:17:12

不要去擅自改动tagCALCINFO的结构字段!

DLL公式只能有一个返回值,就是m_pResultBuf; 定义的,你擅自增加了字段,将导致灾难性后果,引起软件崩溃死机

共6 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.03125 s, 2 queries.