![]() |
#2
csnpx2007-10-19 18:45
请教这个的具体的用法及步骤(希望那位老师一步一步的赐教它的用法和编写步骤)先谢谢了! 利鹰扩展函数规范V2.05 1.本规范适用于利鹰2.05公式系统. 2.扩展函数用于实现系统函数不能实现的特殊算法,提高运算速度。 3.扩展函数用windows 32位动态连接库实现,建议使用Microsoft Visual C++编程.(vc6、vc7测试通过) 4.调用时在公式编辑器中写"动态库名称@函数名称"(参数表)即可,例如下面函数可以写为"LFUNC@CS"(5,1,0) 5.动态连接库名称和函数名称可以自己定义. 6.使用时必须将动态库拷贝到利鹰目录下使用.
//彩票数据 typedef struct tagLYCPDATA { int nNum[101];//0: 特别号号码数字 1-99: 基本号位数字 100: 期数 } LYCPDATA;
typedef struct tagLYCPINFO { char *pcharCpName;//彩票名字 int nType;//0:传统式 1:乐透式 2: 组合式
int nBaseMax;//基本号最大数字 int nBaseMin;//基本号最小数字
int nSpecialMax;//特别号最大数字 <99 int nSpecialMin;//特别号最小数字 >=0
int nPData;//当前彩票数据在历史数据中的位置,以0开始;如nPData=99,就表示nNum代表的是第100期开奖数据数据
char *pcharInfo[10];//系统保留 } LYCPINFO;
typedef struct tagLYDATA { const LYCPINFO *pCpInfo;//当前彩票类型 const LYCPDATA *pCpData;//当前彩票历史数据
const float floParam[10];//数字类型参数 const char *pcharParam[10];//字符串类型参数 const int nParamType[10];//参数类型 0:数字有效 1:字符串有效
char charResult[1024];//返回字符串
char *pcharExData[105];//系统保留 } LYDATA;
/* 函数输出
extern "C" _declspec(dllexport) int xxxxxxxxSTR(CLYDATA* pData); ---------- B
2.函数必须以上述A,B两种形式之一声明,请用实际函数名称替代xxxxxxxx; 对于C++程序还需包括在 extern "C" { } 括号中. 3.上述形式A用于声明返回值为数字的函数; 形式B用于声明返回值为字符串的函数;两种函数的区别在于后者以STR结尾. 4.函数计算数字结果用pData->pfResult带回; 字符串结果由pData->pcResult带回,字符串长度不能超过100字节 5.函数返回0表示错误或数据无效,否则返回非1; 6.函数名称长度不能超过15字节,动态连接库文件名不能超过9字节(不包括扩展名),动态库名称不能叫SYSTEM,EXPLORER 7.编译时请请选择1字节对齐
|
// LyFnc.cpp : Defines the entry point for the DLL application.
/*
///////////////////////////////////////////////////////////////////////////
利鹰扩展函数规范V2.05
1.本规范适用于利鹰2.05公式系统.
2.扩展函数用于实现系统函数不能实现的特殊算法,提高运算速度。
3.扩展函数用windows 32位动态连接库实现,建议使用Microsoft Visual C++编程.
4.调用时在公式编辑器中写"动态库名称@函数名称"(参数表)即可
5.动态连接库名称和函数名称可以自己定义.
6.使用时可以将动态库拷贝到利鹰目录下使用.
*/
#include "stdafx.h"
#include "FncData.h"
extern "C" _declspec(dllexport) int FUN1(LYDATA *pData)
{
int i,n;
if( pData->nParamCount!=2 )
return 0;
i = (int)pData->floParam[0];
n = (int)pData->floParam[1]-1;
int zx1,zx2,zx3,zx4,zx5,zx6,zx7,zx8,zx9,zx10,fx11,fx12,fx13,fx14;
if(i==0)
{
zx1=1; zx2=2; zx3=4; zx4=5; zx5=6; zx6=7; zx7=8; zx8=10; zx9=11; zx10=12; fx11=3; fx12=9; fx13=13; fx14=14;
}
else if(i==1)
{
zx1=2; zx2=4; zx3=5; zx4=6; zx5=7; zx6=8; zx7=9; zx8=10; zx9=13; zx10=14; fx11=1; fx12=3; fx13=11; fx14=12;
}
else if(i==2)
{
zx1=1; zx2=3; zx3=5; zx4=6; zx5=7; zx6=10; zx7=11; zx8=12; zx9=13; zx10=14; fx11=2; fx12=4; fx13=8; fx14=9;
}
else
{
;
}
pData->pfResult = new float[14];
pData->pfResult[0] = (float)zx1;
pData->pfResult[1] = (float)zx2;
pData->pfResult[2] = (float)zx3;
pData->pfResult[3] = (float)zx4;
pData->pfResult[4] = (float)zx5;
pData->pfResult[5] = (float)zx6;
pData->pfResult[6] = (float)zx7;
pData->pfResult[7] = (float)zx8;
pData->pfResult[8] = (float)zx9;
pData->pfResult[9] = (float)zx10;
pData->pfResult[10] = (float)fx11;
pData->pfResult[11] = (float)fx12;
pData->pfResult[12] = (float)fx13;
pData->pfResult[13] = (float)fx14;
*pData->pfResult = pData->pfResult[n];
return 1;
}
////数值转换并调到软件内没问题了,就是不能在软件内把计算结果引用到另一个指标内,引用软件就销毁,如何调整才能不销毁
[此贴子已经被作者于2007-10-19 18:48:38编辑过]