2017年6月9日星期五

如何编制DELPHI版本的飞狐DLL扩展函数 (转发)
我拆成了两文件,你可以用回你的做法。关键的数据结构和函数调用格式给你改好了。
(一)dllfnc.dpr
library dllfnc;
uses
Unit1 in 'Unit1.pas';
{$E *.dll}
{$R *.RES}
exports
FNC1;
begin
end.
(二) unit1.pas
unit Unit1;
interface
uses
SysUtils,
Classes;
type
//分析周期
DATA_TYPE=
(
TICK_DATA,             //分笔成交
MIN1_DATA,             //1分钟线
MIN5_DATA,             //5分钟线
MIN15_DATA,            //15分钟线
MIN30_DATA,            //30分钟线
MIN60_DATA,            //60分钟线
DAY_DATA,              //日线
WEEK_DATA,             //周线
MONTH_DATA,            //月线
MULTI_DATA             //多日线
);
//基本数据
tagSTKDATA = packed record
m_time:     integer;   //时间,UCT
m_fOpen:    single;    //开盘
m_fHigh:    single;    //最高
m_fLow:     single;    //最低
m_fClose:   single;    //收盘
m_fVolume:  single;    //成交量
m_fAmount:  single;    //成交额
m_wAdvance: word;      //上涨家数(仅大盘有效)
m_wDecline: word;      //下跌家数(仅大盘有效)
end;
//分笔成交数据的买卖盘
tagMMP = packed record
  m_fBuyPrice:  array[1..3] of single;    //买1--买3价
  m_fBuyVol:    array[1..3] of single;    //买1--买3量
  m_fSellPrice: array[1..3] of single;    //卖1--卖3价
  m_fSellVol:   array[1..3] of single;    //卖1--卖3量
end;
//扩展数据,用于描述分笔成交数据的买卖盘
tagSTKDATAEx = packed record
     case integer of
     0: (mmp: tagMMP);
     1: (m_fDataEx: array[1..12] of single);   //保留
end;
//财务数据顺序(m_pfFinData内容)
tagFinData = packed record
   Zgb:     Single;  //0    总股本(万股)
   Gjg:     Single;  //1    国家股
   Fqrg:    Single;  //2    发起人法人股
   Frg:     Single;  //3    法人股
   LtBg:    Single;  //4    B股
   LtHg:    Single;  //5    H股
   LtAg:    Single;  //6    流通A股
   Zgg:     Single;  //7    职工股
   A2zpg:   Single;  //8    A2转配股
   Zzc:     Single;  //9    总资产(千元)
   Ldzc:    Single;  //10   流动资产
   Gdzc:    Single;  //11   固定资产
   Wxzc:    Single;  //12   无形资产
   Cqtz:    Single;  //13   长期投资
   Ldfz:    Single;  //14   流动负债
   Cqfz:    Single;  //15   长期负债
   Zbgjj:   Single;  //16   资本公积金
   Mggjj:   Single;  //17   每股公积金
   Gdqy:    Single;  //18   股东权益
   Zysr:    Single;  //19   主营收入
   Zyly:    Single;  //20   主营利润,
   Qtly:    Single;  //21   其他利润
   Yyly:    Single;  //22   营业利润
   Tzsy:    Single;  //23   投资收益
   Btsr:    Single;  //24   补贴收入
   Yywsz:   Single;  //25   营业外收支
   Snsytz:  Single;  //26   上年损益调整
   Lyze:    Single;  //27   利润总额
   Shly:    Single;  //28   税后利润
   Jly:     Single;  //29   净利润
   Wfply:   Single;  //30   未分配利润
   Mgwfp:   Single;  //31   每股未分配
   Mgsy:    Single;  //32   每股收益
   Mgjzc:   Single;  //33   每股净资产
   Tzmgjzc: Single;  //34   调整每股净资
   Gdqyb:   Single;  //35   股东权益比,
   Jzsyl:   Single;  //36   净资收益率
end;
//函数数据结构
tagCALCINFO = packed record
     m_dwSize:                LongWord;//结构大小
     m_dwVersion:             LongWord;//调用软件版本(V2.10 : 0x210)
     m_dwSerial:              LongWord;//调用软件序列号
     m_strStkLabel:              Pchar;//股票代码
     m_bIndex:                longBOOL;//大盘
     m_nNumData:               integer;//数据数量(pData,pDataEx,pResultBuf数据数量)
     m_pData:              ^tagSTKDATA;//常规数据,注意:当m_nNumData==0时可能为 NULL
     m_pDataEx:            ^tagSTKDATAEx;//扩展数据,分笔成交买卖盘,注意:可能为 NULL
     m_nParam1Start:           integer;//参数1有效位置
     m_pfParam1:               ^single;//调用参数1
     m_pfParam2:               ^single;//调用参数2
     m_pfParam3:               ^single;//调用参数3
     m_pfParam4:               ^single;//调用参数3
     m_pResultBuf:           ^single;//结果缓冲区
     m_dataType:             DATA_TYPE;//数据类型
     m_pfFinData:           tagFinData;//财务数据
end;
pTagCALCINFO = ^tagCALCINFO;
function FNC1(pData:pTagCALCINFO):integer;stdcall;export;
implementation
function FNC1(pData:pTagCALCINFO):integer;stdcall;export;
begin
  if (@pData.m_pfParam1 <> nil) and (@pData.m_pfParam2 <> nil) then
    result:=1
  else
    result:=0;
  end;
end.



--------------------------------------------------------------------------------
-- 作者: wilson
-- 发布时间: 2002/03/07 00:16am
注意,指标数据实际是添进
m_pResultBuf:           ^single;//结果缓冲

result是指定数组的有效起始下标,为负数表示数据都无效,即不画线


没有评论:

指定目录的图片2值化

```python # -*- coding: utf-8 -*- """指定目录的图片,自适应2值化 """ import os from PIL import Image import numpy as np imp...