⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ly12x9zh_dllsfmx.txt

📁 利鹰12选9转换dll算法模型
💻 TXT
字号:
// LyFnc.cpp : Defines the entry point for the DLL application.
/*
///////////////////////////////////////////////////////////////////////////
利鹰扩展函数规范V2.05
1.本规范适用于利鹰2.05公式系统.
2.扩展函数用于实现系统函数不能实现的特殊算法,提高运算速度。
3.扩展函数用windows 32位动态连接库实现,建议使用Microsoft Visual C++编程.
4.调用时在公式编辑器中写"动态库名称@函数名称"(参数表)即可,例如下面函数可以写为"LFUNC@MYFUN"(5)
5.动态连接库名称和函数名称可以自己定义.
6.使用时可以将动态库拷贝到利鹰目录下使用.
*/

#include "stdafx.h"
#include "FncData.h"

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
		case DLL_THREAD_ATTACH:
		case DLL_THREAD_DETACH:
		case DLL_PROCESS_DETACH:
			break;
    }
    return TRUE;
}

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

extern "C" _declspec(dllexport) int xxxxxxxx(CLYDATA* pData);	---------- A
extern "C" _declspec(dllexport) int xxxxxxxxSTR(CLYDATA* pData);	---------- B

1.函数名称需全部大写.
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为dll名称,可以重命名生成后的dll名称)
extern "C" _declspec(dllexport) int CYXT(LYDATA *pData)
{
	//通过("LyFnc@CYXT"(123,10);)调用/*软件内得到的数值为123位的除10余数形态*/
    int scope,divisor; //定义参数scope=号码位置组合,divisor=除数,
if( pData->nParamCount!=2 )//检查参数必须是2个参数
		return 0;//不是就中止函数,返回错误。

    int nHM[100]; //定义数组
	int nNumMax,nNumMin;//定义最大最小函数名称
	nNumMax= pData->pCpInfo->nBaseNum;//最大数等于开奖号码的位数,排列三为3位
if( pData->pCpInfo->nSpecialNum > 0 )//当有特别号时
	nNumMin=0;//最小值为0
else          //否则
	nNumMin=1;//最小值为1
 int a;//定义a函数名称
  a= (int) pData->floParam[0];//a函数等于位置组合,等于第一个参数
  divisor=(int) pData->floParam[1];//除数,等于第二个参数
 int d= 100000000;//定义d函数名称,数值等于100000000
nHM[0]= 0 ;//nHM[0]数组赋值为0(用nHM[0]=(int) pData->pCpData->nNum[0]不能进行乐透型的计算);
int i,n,nZS;//定义i,n,nZS函数名称
for( i=0;i<9;i++)
{
     float n1 ;
	  n1 = (a/d);
   n =(int) n1;//n=(int) (a/d);//intpart(a/d);//取整数部分,intpart是利鹰内的取整数函数
	if( n!=0 || i==8 )
	{
		if( n>=nNumMin && n<=nNumMax )
		{
			nHM[0]++;
			nHM[ nHM[0] ]=n;
		};
	    a=(a - n * d);
	};
    d=(d/10);
};	
   nZS=(0);
for(n=1;n<=nHM[0];n++)
{ 
    i=nHM[n];
	float a1 ;
	a1 = ( pData->pCpData->nNum[i] % divisor);//求余数
  a=(int) a1;//intpart( nHM[i] % 10 );//取整数部分
    nZS=nZS*10+a;
};	

    *pData->pfResult=nZS;//本函数返回值除余形态是数字,因此通pData->pfResult指针返回
	return 1;
}
	

//开始您的c语言函数之旅吧,以下为您预置了3个返回值为数字的空函数
extern "C" _declspec(dllexport) int FUN1(LYDATA *pData)
{
	//以下填写您的程序LyFnc为dll名称,可以重命名生成后的dll名称
	//通过("LyFnc@FUN1"(123,10);)调用/*软件内得到的数值为123位的除10余数形态*/
    int scope,divisor,w,mb; //定义参数scope=号码位置组合,divisor=除数,
if( pData->nParamCount!=4 )//检查参数必须是2个参数
		return 0;//不是就中止函数,返回错误。
    int nHM[100]; //定义数组
	int nNumMax,nNumMin;//定义最大最小函数名称
	nNumMax= pData->pCpInfo->nBaseNum;//最大数等于开奖号码的位数,排列三为3位
if( pData->pCpInfo->nSpecialNum > 0 )//当有特别号时
	nNumMin=0;//最小值为0
else          //否则
	nNumMin=1;//最小值为1
 int a;//定义a函数名称
  a= (int) pData->floParam[0];//a函数等于位置组合,等于第一个参数
  divisor=(int) pData->floParam[1];//除数,等于第二个参数
  w=(int) pData->floParam[2] - 1;//等于第三个参数,用于软件内取用转换后的数值
  mb=(int) pData->floParam[3];//等于第4个参数,用于软件内取用转换后的数值
 int d= 100000000;//定义d函数名称,数值等于100000000
nHM[0]= 0 ;//nHM[0]数组赋值为0(用nHM[0]=(int) pData->pCpData->nNum[0]不能进行乐透型的计算);
int i,n,nZS1;//定义i,n,nZS1函数名称
for( i=0;i<9;i++)
{
     float n1 ;
	  n1 = (a/d);
   n =(int) n1;//n=(int) (a/d);//intpart(a/d);//取整数部分,intpart是利鹰内的取整数函数
	if( n!=0 || i==8 )
	{
		if( n>=nNumMin && n<=nNumMax )
		{
			nHM[0]++;
			nHM[ nHM[0] ]=n;
		};
	    a=(a - n * d);
	};
    d=(d/10);
};	
   nZS1=(0);
for(n=1;n<=nHM[0];n++)
{ 
    i=nHM[n];
	float a1 ;
	a1 = ( pData->pCpData->nNum[i] % divisor);//求余数
  a=(int) a1;//intpart( nHM[i] % 10 );//取整数部分
    nZS1=nZS1*10+a;
};
int x1,y1,z1,w1,nZS,y2;
	y2=(int) (nZS1/10);
	x1=(int) (nZS1/100);
    y1=(int) (y2%10);
	z1=(int) (nZS1%10);
	if( x1>y1 )
	{w1=x1; x1=y1; y1=w1;}
		if( x1>z1 )
		{w1=x1; x1=z1; z1=w1;}
			if( y1>z1 )
			{w1=y1; y1=z1; z1=w1;}

     nZS=(x1*100)+(y1*10)+z1;	
/////*************下面是转换部分
int qm,zx1,zx2,zx3,zx4,zx5,zx6,zx7,zx8,zx9,fx10,fx11,fx12,fx13,fx14,fx15,qh,bxh;//定义zx1...fx15
 //////下面是转换,用switch( )开关组合语句寻找序号
      switch(mb)
     {
     case 0 :
         switch(nZS)
	 {
  	 }  break;
     case 1 :
         switch(nZS)
	 {
  	 }  break;
     case 2 :
         switch(nZS)
	 {
  	 }  break;
     case 3 :
         switch(nZS)
	 {
  	 }  break;
     case 4 :
         switch(nZS)
	 {
  	 }  break;
     case 5 :
         switch(nZS)
	 {
  	 }  break;
     case 6 :
         switch(nZS)
	 {
  	 }  break;
     case 7 :
         switch(nZS)
	 {
  	 }  break;
     case 8 :
         switch(nZS)
	 {
  	 }  break;
     case 9 :
         switch(nZS)
	 {
  	 }  break;
     case 10 :
         switch(nZS)
	 {
  	 }  break;
     case 11 :
         switch(nZS)
	 {
  	 }  break;
     case 12 :
         switch(nZS)
	 {
  	 }  break;
     case 13 :
         switch(nZS)
	 {
  	 }  break;
     case 14 :
         switch(nZS)
	 {
  	 }  break;
     case 15 :
         switch(nZS)
	 {
  	 }  break;
     case 16 :
         switch(nZS)
	 {
  	 }  break;
     case 17 :
         switch(nZS)
	 {
  	 }  break;
     case 18 :
         switch(nZS)
	 {
  	 }  break;
     case 19 :
         switch(nZS)
	 {
  	 }  break;
     case 20 :
         switch(nZS)
	 {
  	 }  break;
      }

       int zx[100];
     zx[1]=(qm%100);
          zx2=(int)(qm/100);
     zx[2]=(zx2%100);
          zx3=(int)(zx2/100);
     zx[3]=(zx3%100);
          zx4=(int)(zx3/100);
     zx[4]=(zx4%100);
          zx5=(int)(zx4/100);
     zx[5]=(zx5%100);
          zx6=(int)(zx5/100);
     zx[6]=(zx6%100);
          zx7=(int)(zx6/100);
     zx[7]=(zx7%100);
          zx8=(int)(zx7/100);
     zx[8]=(zx8%100);
          zx9=(int)(zx8/100);
     zx[9]=(zx9%100);
          fx10=(int)(zx9/100);
     zx[10]=(fx10%100);
          fx11=(int)(fx10/100);
     zx[11]=(fx11%100);
          fx12=(int)(fx11/100);
     zx[12]=(fx12%100);
	 int iz;
  for( iz=0;iz<9;iz++)   
  {  zx[iz]; };


pData->pfResult = new float[18];//为转换数据建立数组
   int hh=(int) (78 - qh);//78-qh就是反选的和值
 pData->pfResult[0] = (float)zx[1];//转换后的第1位
 pData->pfResult[1] = (float)zx[2]; 
 pData->pfResult[2] = (float)zx[3]; 
 pData->pfResult[3] = (float)zx[4]; 
 pData->pfResult[4] = (float)zx[5]; 
 pData->pfResult[5] = (float)zx[6]; 
 pData->pfResult[6] = (float)zx[7]; 
 pData->pfResult[7] = (float)zx[8]; 
 pData->pfResult[8] = (float)zx[9];//转换后的第9位,即12选9的最后一个数 
 pData->pfResult[9] = (float)zx[10];//转换后12选9的反选第1位
 pData->pfResult[10] = (float)zx[11];
 pData->pfResult[11] = (float)zx[12]; //转换后12选9的反选第3位,即12选9的反选12选3的最后一个数
 pData->pfResult[14] = (float)qh;//12选9的和值,78-qh就是反选的和值 
 pData->pfResult[15] = (float)hh;
 pData->pfResult[16] = (float)bxh; 
 pData->pfResult[17] = (float)zx[iz]; 


 /*//本函数返回值转换后的数值是数字,因此通pData->pfResult指针返回*/////   
    *pData->pfResult=pData->pfResult[w];
/////*************上面是转换部分  
	return 1;
}


extern "C" _declspec(dllexport) int FUN2(LYDATA *pData)
{
	//以下填写您的程序
	
	return 1;
}


extern "C" _declspec(dllexport) int FUN3(LYDATA *pData)
{
	//以下填写您的程序
	
	return 1;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -