?? 利鷹8選6轉(zhuǎn)換dll接口模型.txt
字號(hào):
// LyFnc.cpp : Defines the entry point for the DLL application.
/*
///////////////////////////////////////////////////////////////////////////
利鷹擴(kuò)展函數(shù)規(guī)范V2.05
1.本規(guī)范適用于利鷹2.05公式系統(tǒng).
2.擴(kuò)展函數(shù)用于實(shí)現(xiàn)系統(tǒng)函數(shù)不能實(shí)現(xiàn)的特殊算法,提高運(yùn)算速度。
3.擴(kuò)展函數(shù)用windows 32位動(dòng)態(tài)連接庫(kù)實(shí)現(xiàn),建議使用Microsoft Visual C++編程.
4.調(diào)用時(shí)在公式編輯器中寫(xiě)"動(dòng)態(tài)庫(kù)名稱@函數(shù)名稱"(參數(shù)表)即可,例如下面函數(shù)可以寫(xiě)為"LFUNC@MYFUN"(5)
5.動(dòng)態(tài)連接庫(kù)名稱和函數(shù)名稱可以自己定義.
6.使用時(shí)可以將動(dòng)態(tài)庫(kù)拷貝到利鷹目錄下使用.
*/
#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ù)名稱需全部大寫(xiě).
2.函數(shù)必須以上述A,B兩種形式之一聲明,請(qǐng)用實(shí)際函數(shù)名稱替代xxxxxxxx;
對(duì)于C++程序還需包括在 extern "C" { } 括號(hào)中.
3.上述形式A用于聲明返回值為數(shù)字的函數(shù);
形式B用于聲明返回值為字符串的函數(shù);兩種函數(shù)的區(qū)別在于后者以STR結(jié)尾.
4.函數(shù)計(jì)算數(shù)字結(jié)果用pData->pfResult帶回;
字符串結(jié)果由pData->pcResult帶回,字符串長(zhǎng)度不能超過(guò)100字節(jié)
5.函數(shù)返回0表示錯(cuò)誤或數(shù)據(jù)無(wú)效,否則返回非1;
6.函數(shù)名稱長(zhǎng)度不能超過(guò)15字節(jié),動(dòng)態(tài)連接庫(kù)文件名不能超過(guò)9字節(jié)(不包括擴(kuò)展名),動(dòng)態(tài)庫(kù)名稱不能叫SYSTEM,EXPLORER
7.編譯時(shí)請(qǐng)請(qǐng)選擇1字節(jié)對(duì)齊
*/
extern "C" _declspec(dllexport) int FUN0(LYDATA *pData)
{
int i,w;
if( pData->nParamCount!=2 )//檢查參數(shù)必須是2個(gè)參數(shù)
return 0;//不是就中止函數(shù),返回錯(cuò)誤
i= (int) pData->floParam[0];//第一個(gè)參數(shù)
w=(int) pData->floParam[1] - 1;//等于第二個(gè)參數(shù)
int zx1,zx2,zx3,zx4,zx5,zx6,zx7,zx8,qh,bxh;//定義zx1...fx14
//////下面是轉(zhuǎn)換,用switch( )開(kāi)關(guān)組合語(yǔ)句尋找序號(hào)
switch(i)
{
case 0 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=5; zx6=6; zx7=7; zx8=8; qh=21; bxh=0; break;
case 1 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=5; zx6=7; zx7=6; zx8=8; qh=22; bxh=1; break;
case 2 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=5; zx6=8; zx7=6; zx8=7; qh=23; bxh=2; break;
case 3 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=6; zx6=7; zx7=5; zx8=8; qh=23; bxh=3; break;
case 4 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=6; zx6=8; zx7=5; zx8=7; qh=24; bxh=4; break;
case 5 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=7; zx6=8; zx7=5; zx8=6; qh=25; bxh=5; break;
case 6 : zx1=1; zx2=2; zx3=3; zx4=5; zx5=6; zx6=7; zx7=4; zx8=8; qh=24; bxh=6; break;
case 7 : zx1=1; zx2=2; zx3=3; zx4=5; zx5=6; zx6=8; zx7=4; zx8=7; qh=25; bxh=7; break;
case 8 : zx1=1; zx2=2; zx3=3; zx4=5; zx5=7; zx6=8; zx7=4; zx8=6; qh=26; bxh=8; break;
case 9 : zx1=1; zx2=2; zx3=3; zx4=6; zx5=7; zx6=8; zx7=4; zx8=5; qh=27; bxh=9; break;
case 10 : zx1=1; zx2=2; zx3=4; zx4=5; zx5=6; zx6=7; zx7=3; zx8=8; qh=25; bxh=10; break;
case 11 : zx1=1; zx2=2; zx3=4; zx4=5; zx5=6; zx6=8; zx7=3; zx8=7; qh=26; bxh=11; break;
case 12 : zx1=1; zx2=2; zx3=4; zx4=5; zx5=7; zx6=8; zx7=3; zx8=6; qh=27; bxh=12; break;
case 13 : zx1=1; zx2=2; zx3=4; zx4=6; zx5=7; zx6=8; zx7=3; zx8=5; qh=28; bxh=13; break;
case 14 : zx1=1; zx2=2; zx3=5; zx4=6; zx5=7; zx6=8; zx7=3; zx8=4; qh=29; bxh=14; break;
case 15 : zx1=1; zx2=3; zx3=4; zx4=5; zx5=6; zx6=7; zx7=2; zx8=8; qh=26; bxh=15; break;
case 16 : zx1=1; zx2=3; zx3=4; zx4=5; zx5=6; zx6=8; zx7=2; zx8=7; qh=27; bxh=16; break;
case 17 : zx1=1; zx2=3; zx3=4; zx4=5; zx5=7; zx6=8; zx7=2; zx8=6; qh=28; bxh=17; break;
case 18 : zx1=1; zx2=3; zx3=4; zx4=6; zx5=7; zx6=8; zx7=2; zx8=5; qh=29; bxh=18; break;
case 19 : zx1=1; zx2=3; zx3=5; zx4=6; zx5=7; zx6=8; zx7=2; zx8=4; qh=30; bxh=19; break;
case 20 : zx1=1; zx2=4; zx3=5; zx4=6; zx5=7; zx6=8; zx7=2; zx8=3; qh=31; bxh=20; break;
case 21 : zx1=2; zx2=3; zx3=4; zx4=5; zx5=6; zx6=7; zx7=1; zx8=8; qh=27; bxh=21; break;
case 22 : zx1=2; zx2=3; zx3=4; zx4=5; zx5=6; zx6=8; zx7=1; zx8=7; qh=28; bxh=22; break;
case 23 : zx1=2; zx2=3; zx3=4; zx4=5; zx5=7; zx6=8; zx7=1; zx8=6; qh=29; bxh=23; break;
case 24 : zx1=2; zx2=3; zx3=4; zx4=6; zx5=7; zx6=8; zx7=1; zx8=5; qh=30; bxh=24; break;
case 25 : zx1=2; zx2=3; zx3=5; zx4=6; zx5=7; zx6=8; zx7=1; zx8=4; qh=31; bxh=25; break;
case 26 : zx1=2; zx2=4; zx3=5; zx4=6; zx5=7; zx6=8; zx7=1; zx8=3; qh=32; bxh=26; break;
case 27 : zx1=3; zx2=4; zx3=5; zx4=6; zx5=7; zx6=8; zx7=1; zx8=2; qh=33; bxh=27; break;
}
//最后 需要把值返回
pData->pfResult = new float[11];//為轉(zhuǎn)換數(shù)據(jù)建立數(shù)組
int hh=(int) (36 - qh);//
pData->pfResult[0] = (float)zx1;//轉(zhuǎn)換后的第1位
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)qh;
pData->pfResult[9] = (float)hh;
pData->pfResult[10] = (float)bxh;
/*//本函數(shù)返回值轉(zhuǎn)換后的數(shù)值是數(shù)字,因此通pData->pfResult指針?lè)祷?/////
*pData->pfResult=pData->pfResult[w];
/////*************上面是轉(zhuǎn)換部分
return 1;
}
extern "C" _declspec(dllexport) int FUN1(LYDATA *pData)
{
int i,w;
if( pData->nParamCount!=2 )//檢查參數(shù)必須是2個(gè)參數(shù)
return 0;//不是就中止函數(shù),返回錯(cuò)誤
i= (int) pData->floParam[0];//第一個(gè)參數(shù)
w=(int) pData->floParam[1] - 1;//等于第二個(gè)參數(shù)
int zx1,zx2,zx3,zx4,zx5,zx6,zx7,zx8,qh,bxh;//定義zx1...fx14
//////下面是轉(zhuǎn)換,用switch( )開(kāi)關(guān)組合語(yǔ)句尋找序號(hào)
switch(i)
{
case 0 : zx1=1; zx2=4; zx3=5; zx4=6; zx5=7; zx6=8; zx7=2; zx8=3; qh=31; bxh=20; break;
case 1 : zx1=1; zx2=3; zx3=4; zx4=6; zx5=7; zx6=8; zx7=2; zx8=5; qh=29; bxh=18; break;
case 2 : zx1=1; zx2=3; zx3=4; zx4=5; zx5=6; zx6=8; zx7=2; zx8=7; qh=27; bxh=16; break;
case 3 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=6; zx6=7; zx7=5; zx8=8; qh=23; bxh=3; break;
case 4 : zx1=1; zx2=3; zx3=4; zx4=5; zx5=7; zx6=8; zx7=2; zx8=6; qh=28; bxh=17; break;
case 5 : zx1=2; zx2=3; zx3=5; zx4=6; zx5=7; zx6=8; zx7=1; zx8=4; qh=31; bxh=25; break;
case 6 : zx1=1; zx2=2; zx3=4; zx4=5; zx5=6; zx6=8; zx7=3; zx8=7; qh=26; bxh=11; break;
case 7 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=5; zx6=6; zx7=7; zx8=8; qh=21; bxh=0; break;
case 8 : zx1=1; zx2=2; zx3=4; zx4=6; zx5=7; zx6=8; zx7=3; zx8=5; qh=28; bxh=13; break;
case 9 : zx1=1; zx2=3; zx3=4; zx4=5; zx5=6; zx6=7; zx7=2; zx8=8; qh=26; bxh=15; break;
case 10 : zx1=2; zx2=3; zx3=4; zx4=5; zx5=6; zx6=8; zx7=1; zx8=7; qh=28; bxh=22; break;
case 11 : zx1=2; zx2=4; zx3=5; zx4=6; zx5=7; zx6=8; zx7=1; zx8=3; qh=32; bxh=26; break;
case 12 : zx1=1; zx2=2; zx3=4; zx4=5; zx5=7; zx6=8; zx7=3; zx8=6; qh=27; bxh=12; break;
case 13 : zx1=1; zx2=2; zx3=3; zx4=5; zx5=7; zx6=8; zx7=4; zx8=6; qh=26; bxh=8; break;
case 14 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=5; zx6=8; zx7=6; zx8=7; qh=23; bxh=2; break;
case 15 : zx1=2; zx2=3; zx3=4; zx4=5; zx5=7; zx6=8; zx7=1; zx8=6; qh=29; bxh=23; break;
case 16 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=6; zx6=8; zx7=5; zx8=7; qh=24; bxh=4; break;
case 17 : zx1=2; zx2=3; zx3=4; zx4=6; zx5=7; zx6=8; zx7=1; zx8=5; qh=30; bxh=24; break;
case 18 : zx1=1; zx2=3; zx3=5; zx4=6; zx5=7; zx6=8; zx7=2; zx8=4; qh=30; bxh=19; break;
case 19 : zx1=3; zx2=4; zx3=5; zx4=6; zx5=7; zx6=8; zx7=1; zx8=2; qh=33; bxh=27; break;
case 20 : zx1=1; zx2=2; zx3=3; zx4=6; zx5=7; zx6=8; zx7=4; zx8=5; qh=27; bxh=9; break;
case 21 : zx1=1; zx2=2; zx3=4; zx4=5; zx5=6; zx6=7; zx7=3; zx8=8; qh=25; bxh=10; break;
case 22 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=5; zx6=7; zx7=6; zx8=8; qh=22; bxh=1; break;
case 23 : zx1=1; zx2=2; zx3=5; zx4=6; zx5=7; zx6=8; zx7=3; zx8=4; qh=29; bxh=14; break;
case 24 : zx1=1; zx2=2; zx3=3; zx4=5; zx5=6; zx6=8; zx7=4; zx8=7; qh=25; bxh=7; break;
case 25 : zx1=2; zx2=3; zx3=4; zx4=5; zx5=6; zx6=7; zx7=1; zx8=8; qh=27; bxh=21; break;
case 26 : zx1=1; zx2=2; zx3=3; zx4=5; zx5=6; zx6=7; zx7=4; zx8=8; qh=24; bxh=6; break;
case 27 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=7; zx6=8; zx7=5; zx8=6; qh=25; bxh=5; break;
}
//最后 需要把值返回
pData->pfResult = new float[11];//為轉(zhuǎn)換數(shù)據(jù)建立數(shù)組
int hh=(int) (36 - qh);//
pData->pfResult[0] = (float)zx1;//轉(zhuǎn)換后的第1位
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)qh;
pData->pfResult[9] = (float)hh;
pData->pfResult[10] = (float)bxh;
/*//本函數(shù)返回值轉(zhuǎn)換后的數(shù)值是數(shù)字,因此通pData->pfResult指針?lè)祷?/////
*pData->pfResult=pData->pfResult[w];
/////*************上面是轉(zhuǎn)換部分
return 1;
}
extern "C" _declspec(dllexport) int FUN2(LYDATA *pData)
{
int i,w;
if( pData->nParamCount!=2 )//檢查參數(shù)必須是2個(gè)參數(shù)
return 0;//不是就中止函數(shù),返回錯(cuò)誤
i= (int) pData->floParam[0];//第一個(gè)參數(shù)
w=(int) pData->floParam[1] - 1;//等于第二個(gè)參數(shù)
int zx1,zx2,zx3,zx4,zx5,zx6,zx7,zx8,qh,bxh;//定義zx1...fx14
//////下面是轉(zhuǎn)換,用switch( )開(kāi)關(guān)組合語(yǔ)句尋找序號(hào)
switch(i)
{
case 0 : zx1=1; zx2=4; zx3=5; zx4=6; zx5=7; zx6=8; zx7=2; zx8=3; qh=31; bxh=20; break;
case 1 : zx1=2; zx2=4; zx3=5; zx4=6; zx5=7; zx6=8; zx7=1; zx8=3; qh=32; bxh=26; break;
case 2 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=5; zx6=6; zx7=7; zx8=8; qh=21; bxh=0; break;
case 3 : zx1=1; zx2=2; zx3=3; zx4=5; zx5=6; zx6=8; zx7=4; zx8=7; qh=25; bxh=7; break;
case 4 : zx1=3; zx2=4; zx3=5; zx4=6; zx5=7; zx6=8; zx7=1; zx8=2; qh=33; bxh=27; break;
case 5 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=5; zx6=7; zx7=6; zx8=8; qh=22; bxh=1; break;
case 6 : zx1=1; zx2=3; zx3=5; zx4=6; zx5=7; zx6=8; zx7=2; zx8=4; qh=30; bxh=19; break;
case 7 : zx1=2; zx2=3; zx3=4; zx4=6; zx5=7; zx6=8; zx7=1; zx8=5; qh=30; bxh=24; break;
case 8 : zx1=2; zx2=3; zx3=5; zx4=6; zx5=7; zx6=8; zx7=1; zx8=4; qh=31; bxh=25; break;
case 9 : zx1=1; zx2=2; zx3=3; zx4=6; zx5=7; zx6=8; zx7=4; zx8=5; qh=27; bxh=9; break;
case 10 : zx1=1; zx2=2; zx3=4; zx4=5; zx5=7; zx6=8; zx7=3; zx8=6; qh=27; bxh=12; break;
case 11 : zx1=2; zx2=3; zx3=4; zx4=5; zx5=6; zx6=8; zx7=1; zx8=7; qh=28; bxh=22; break;
case 12 : zx1=1; zx2=3; zx3=4; zx4=5; zx5=6; zx6=8; zx7=2; zx8=7; qh=27; bxh=16; break;
case 13 : zx1=2; zx2=3; zx3=4; zx4=5; zx5=6; zx6=7; zx7=1; zx8=8; qh=27; bxh=21; break;
case 14 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=5; zx6=8; zx7=6; zx8=7; qh=23; bxh=2; break;
case 15 : zx1=1; zx2=2; zx3=4; zx4=5; zx5=6; zx6=7; zx7=3; zx8=8; qh=25; bxh=10; break;
case 16 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=7; zx6=8; zx7=5; zx8=6; qh=25; bxh=5; break;
case 17 : zx1=1; zx2=3; zx3=4; zx4=5; zx5=7; zx6=8; zx7=2; zx8=6; qh=28; bxh=17; break;
case 18 : zx1=1; zx2=3; zx3=4; zx4=5; zx5=6; zx6=7; zx7=2; zx8=8; qh=26; bxh=15; break;
case 19 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=6; zx6=7; zx7=5; zx8=8; qh=23; bxh=3; break;
case 20 : zx1=2; zx2=3; zx3=4; zx4=5; zx5=7; zx6=8; zx7=1; zx8=6; qh=29; bxh=23; break;
case 21 : zx1=1; zx2=2; zx3=3; zx4=5; zx5=6; zx6=7; zx7=4; zx8=8; qh=24; bxh=6; break;
case 22 : zx1=1; zx2=2; zx3=5; zx4=6; zx5=7; zx6=8; zx7=3; zx8=4; qh=29; bxh=14; break;
case 23 : zx1=1; zx2=2; zx3=4; zx4=5; zx5=6; zx6=8; zx7=3; zx8=7; qh=26; bxh=11; break;
case 24 : zx1=1; zx2=2; zx3=3; zx4=4; zx5=6; zx6=8; zx7=5; zx8=7; qh=24; bxh=4; break;
case 25 : zx1=1; zx2=2; zx3=4; zx4=6; zx5=7; zx6=8; zx7=3; zx8=5; qh=28; bxh=13; break;
case 26 : zx1=1; zx2=3; zx3=4; zx4=6; zx5=7; zx6=8; zx7=2; zx8=5; qh=29; bxh=18; break;
case 27 : zx1=1; zx2=2; zx3=3; zx4=5; zx5=7; zx6=8; zx7=4; zx8=6; qh=26; bxh=8; break;
}
//最后 需要把值返回
pData->pfResult = new float[11];//為轉(zhuǎn)換數(shù)據(jù)建立數(shù)組
int hh=(int) (36 - qh);//
pData->pfResult[0] = (float)zx1;//轉(zhuǎn)換后的第1位
pData->pfResult[1] = (float)zx2;
pData->pfResult[2] = (float)zx3;
pData->pfResult[3] = (float)zx4;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -