【转载】通达信DLL插件支持字符串技巧

原文链接:https://mp.weixin.qq.com/s/vEwfRELUpHEQGGCpS_uqzQ
原作者:品生文化


通达信DLL插件支持字符串前文已经简单描述,这次详细描述具体代码。

通达信公式数据使用是浮点数,没有字符串类型,对于字符串的支持是通过函数来实现,字符串函数会在内部生成字符串并返回浮点数,可以这样认为,这个浮点数就是字符串的句柄,根据这个句柄可以获取字符串的内容。具体代码

初始化句柄到字符串的转换函数,

void Init()

{

    char szFullPath[] = "c:\\mytdx\\tcalc.dll";

    HANDLE h = LoadLibrary(szFullPath);

    g_funGetVarName = GetProcAddress((HMODULE)h, "?GetCharFromPos@CMainCalcInterface@@QAEHPADJ@Z");

}

 

由句柄获取字符串函数

void TDX_GetStringValue(inti, char *pBuf)

{

    ((void (WINAPI*)(char*, int))g_funGetVarName)(pBuf, i);

}

 

 

void TDX_GetStringValue(inti, char *pBuf);

void TestPlugin1(intDataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc)

{

float *pfStockCode = pfINa;

 

/*分配空间并获取字符串*/

    char szStockCode[500] = { 0 };

TDX_GetStringValue((DWORD)(pfStockCode[0] + 0.49), szStockCode);

 

         for(int i=0;i<DataLen;i++)

                  pfOUT[i]=i;

}

使用公式示例:

TDXDLL1(1,CODE,0,0);

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值