?? ly12x9zh_dllsfmx.txt
字號:
// LyFnc.cpp : Defines the entry point for the DLL application.
/*
///////////////////////////////////////////////////////////////////////////
利鷹擴展函數(shù)規(guī)范V2.05
1.本規(guī)范適用于利鷹2.05公式系統(tǒng).
2.擴展函數(shù)用于實現(xiàn)系統(tǒng)函數(shù)不能實現(xiàn)的特殊算法,提高運算速度。
3.擴展函數(shù)用windows 32位動態(tài)連接庫實現(xiàn),建議使用Microsoft Visual C++編程.
4.調(diào)用時在公式編輯器中寫"動態(tài)庫名稱@函數(shù)名稱"(參數(shù)表)即可,例如下面函數(shù)可以寫為"LFUNC@MYFUN"(5)
5.動態(tài)連接庫名稱和函數(shù)名稱可以自己定義.
6.使用時可以將動態(tài)庫拷貝到利鷹目錄下使用.
*/
#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;
}
///////////////////////////////////////////////////////////////////////////////////
/* 函數(shù)輸出
extern "C" _declspec(dllexport) int xxxxxxxx(CLYDATA* pData); ---------- A
extern "C" _declspec(dllexport) int xxxxxxxxSTR(CLYDATA* pData); ---------- B
1.函數(shù)名稱需全部大寫.
2.函數(shù)必須以上述A,B兩種形式之一聲明,請用實際函數(shù)名稱替代xxxxxxxx;
對于C++程序還需包括在 extern "C" { } 括號中.
3.上述形式A用于聲明返回值為數(shù)字的函數(shù);
形式B用于聲明返回值為字符串的函數(shù);兩種函數(shù)的區(qū)別在于后者以STR結(jié)尾.
4.函數(shù)計算數(shù)字結(jié)果用pData->pfResult帶回;
字符串結(jié)果由pData->pcResult帶回,字符串長度不能超過100字節(jié)
5.函數(shù)返回0表示錯誤或數(shù)據(jù)無效,否則返回非1;
6.函數(shù)名稱長度不能超過15字節(jié),動態(tài)連接庫文件名不能超過9字節(jié)(不包括擴展名),動態(tài)庫名稱不能叫SYSTEM,EXPLORER
7.編譯時請請選擇1字節(jié)對齊
*/
//示例函數(shù),使用時用實際名稱替換(LyFnc為dll名稱,可以重命名生成后的dll名稱)
extern "C" _declspec(dllexport) int CYXT(LYDATA *pData)
{
//通過("LyFnc@CYXT"(123,10);)調(diào)用/*軟件內(nèi)得到的數(shù)值為123位的除10余數(shù)形態(tài)*/
int scope,divisor; //定義參數(shù)scope=號碼位置組合,divisor=除數(shù),
if( pData->nParamCount!=2 )//檢查參數(shù)必須是2個參數(shù)
return 0;//不是就中止函數(shù),返回錯誤。
int nHM[100]; //定義數(shù)組
int nNumMax,nNumMin;//定義最大最小函數(shù)名稱
nNumMax= pData->pCpInfo->nBaseNum;//最大數(shù)等于開獎號碼的位數(shù),排列三為3位
if( pData->pCpInfo->nSpecialNum > 0 )//當有特別號時
nNumMin=0;//最小值為0
else //否則
nNumMin=1;//最小值為1
int a;//定義a函數(shù)名稱
a= (int) pData->floParam[0];//a函數(shù)等于位置組合,等于第一個參數(shù)
divisor=(int) pData->floParam[1];//除數(shù),等于第二個參數(shù)
int d= 100000000;//定義d函數(shù)名稱,數(shù)值等于100000000
nHM[0]= 0 ;//nHM[0]數(shù)組賦值為0(用nHM[0]=(int) pData->pCpData->nNum[0]不能進行樂透型的計算);
int i,n,nZS;//定義i,n,nZS函數(shù)名稱
for( i=0;i<9;i++)
{
float n1 ;
n1 = (a/d);
n =(int) n1;//n=(int) (a/d);//intpart(a/d);//取整數(shù)部分,intpart是利鷹內(nèi)的取整數(shù)函數(shù)
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);//求余數(shù)
a=(int) a1;//intpart( nHM[i] % 10 );//取整數(shù)部分
nZS=nZS*10+a;
};
*pData->pfResult=nZS;//本函數(shù)返回值除余形態(tài)是數(shù)字,因此通pData->pfResult指針返回
return 1;
}
//開始您的c語言函數(shù)之旅吧,以下為您預(yù)置了3個返回值為數(shù)字的空函數(shù)
extern "C" _declspec(dllexport) int FUN1(LYDATA *pData)
{
//以下填寫您的程序LyFnc為dll名稱,可以重命名生成后的dll名稱
//通過("LyFnc@FUN1"(123,10);)調(diào)用/*軟件內(nèi)得到的數(shù)值為123位的除10余數(shù)形態(tài)*/
int scope,divisor,w,mb; //定義參數(shù)scope=號碼位置組合,divisor=除數(shù),
if( pData->nParamCount!=4 )//檢查參數(shù)必須是2個參數(shù)
return 0;//不是就中止函數(shù),返回錯誤。
int nHM[100]; //定義數(shù)組
int nNumMax,nNumMin;//定義最大最小函數(shù)名稱
nNumMax= pData->pCpInfo->nBaseNum;//最大數(shù)等于開獎號碼的位數(shù),排列三為3位
if( pData->pCpInfo->nSpecialNum > 0 )//當有特別號時
nNumMin=0;//最小值為0
else //否則
nNumMin=1;//最小值為1
int a;//定義a函數(shù)名稱
a= (int) pData->floParam[0];//a函數(shù)等于位置組合,等于第一個參數(shù)
divisor=(int) pData->floParam[1];//除數(shù),等于第二個參數(shù)
w=(int) pData->floParam[2] - 1;//等于第三個參數(shù),用于軟件內(nèi)取用轉(zhuǎn)換后的數(shù)值
mb=(int) pData->floParam[3];//等于第4個參數(shù),用于軟件內(nèi)取用轉(zhuǎn)換后的數(shù)值
int d= 100000000;//定義d函數(shù)名稱,數(shù)值等于100000000
nHM[0]= 0 ;//nHM[0]數(shù)組賦值為0(用nHM[0]=(int) pData->pCpData->nNum[0]不能進行樂透型的計算);
int i,n,nZS1;//定義i,n,nZS1函數(shù)名稱
for( i=0;i<9;i++)
{
float n1 ;
n1 = (a/d);
n =(int) n1;//n=(int) (a/d);//intpart(a/d);//取整數(shù)部分,intpart是利鷹內(nèi)的取整數(shù)函數(shù)
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);//求余數(shù)
a=(int) a1;//intpart( nHM[i] % 10 );//取整數(shù)部分
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;
/////*************下面是轉(zhuǎn)換部分
int qm,zx1,zx2,zx3,zx4,zx5,zx6,zx7,zx8,zx9,fx10,fx11,fx12,fx13,fx14,fx15,qh,bxh;//定義zx1...fx15
//////下面是轉(zhuǎn)換,用switch( )開關(guān)組合語句尋找序號
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];//為轉(zhuǎn)換數(shù)據(jù)建立數(shù)組
int hh=(int) (78 - qh);//78-qh就是反選的和值
pData->pfResult[0] = (float)zx[1];//轉(zhuǎn)換后的第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];//轉(zhuǎn)換后的第9位,即12選9的最后一個數(shù)
pData->pfResult[9] = (float)zx[10];//轉(zhuǎn)換后12選9的反選第1位
pData->pfResult[10] = (float)zx[11];
pData->pfResult[11] = (float)zx[12]; //轉(zhuǎn)換后12選9的反選第3位,即12選9的反選12選3的最后一個數(shù)
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];
/*//本函數(shù)返回值轉(zhuǎn)換后的數(shù)值是數(shù)字,因此通pData->pfResult指針返回*/////
*pData->pfResult=pData->pfResult[w];
/////*************上面是轉(zhuǎn)換部分
return 1;
}
extern "C" _declspec(dllexport) int FUN2(LYDATA *pData)
{
//以下填寫您的程序
return 1;
}
extern "C" _declspec(dllexport) int FUN3(LYDATA *pData)
{
//以下填寫您的程序
return 1;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -