易语言支持库开发手册 for Delphi.docx

上传人:b****7 文档编号:10576000 上传时间:2023-02-21 格式:DOCX 页数:7 大小:16.83KB
下载 相关 举报
易语言支持库开发手册 for Delphi.docx_第1页
第1页 / 共7页
易语言支持库开发手册 for Delphi.docx_第2页
第2页 / 共7页
易语言支持库开发手册 for Delphi.docx_第3页
第3页 / 共7页
易语言支持库开发手册 for Delphi.docx_第4页
第4页 / 共7页
易语言支持库开发手册 for Delphi.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

易语言支持库开发手册 for Delphi.docx

《易语言支持库开发手册 for Delphi.docx》由会员分享,可在线阅读,更多相关《易语言支持库开发手册 for Delphi.docx(7页珍藏版)》请在冰豆网上搜索。

易语言支持库开发手册 for Delphi.docx

易语言支持库开发手册forDelphi

易语言支持库开发手册forDelphi

 

 

版本:

1.0

日期:

2008.5

作者:

大连大有吴涛易语言软件开发有限公司

综述

这是易语言支持库开发包(EDK,EDevelopmentKit)开发手册之Delphi版本。

本文主要介绍如何用Delphi开发易语言支持库。

基本说明

支持库是扩展易语言系统的主要方式之一,也是最有效的方式之一。

通过使用其它编程语言为易语言开发支持库,易语言系统的功能可以得到无限扩展。

通过支持库这一途径,易语言可以充分整合其它编程语言和操作系统的各种资源,为我所用。

他山之石,可以攻玉。

易语言支持库实际上是动态链接库(在Windows下为DLL文件,在Linux下为SO文件)

易语言支持库必须导出"GetNewInf"函数:

functionGetNewInf():

pLIB_INFO;stdcall;export;

易语言支持库文件的后缀名通常是".fne",还可能是".fnr"或".fnl"

易语言中的文本、字节集、数组等数据都有其特定的二进制格式,请参考“数据存储格式”

开发易语言支持库之前,一定要仔细阅读本文档,和EDK中提供的e.pas头文件(其中有很多信息本文档没有涉及)

 

易语言对支持库的要求很简单,只要导出GetNewInf函数并返回填充完整的LIB_INFO结构体(record)的内存首地址即可。

这看似简单的要求,实际操作起来却十分繁索,要知道,LIB_INFO是一个非常复杂的结构体(record),要完整的填充它不是一件轻松的事情。

在Delphi版本的易语言支持库开发包中,我们做了大量的工作来简化这项操作,目的就是让Delphi开发易语言支持库比C/C++更容易。

 

还有一点要说明,Delphi/VCL并不能完全融合到易语言中,在开发支持库时存在一定的局限性。

配置开发环境

下载易语言支持库开发包(EDK),解压缩到任意目录(如"c:

\edk")。

安装Delphi(5/6/7/8/2005/2006/2007/2008)。

本文以Delphi7为主。

配置Delphi,指定库搜索路径。

请选择Delphi主菜单,"Tools->Environment

Options...",在"Library"子项内的"LibraryPath"中增加e.pas所在路径(如"c:

\edk")。

以上操作为一次性操作,以后不需要重复进行。

第一个支持库

在Delphi中创建一个空白的Win32DLL工程(project),存储为myfne.dpr,修改其代码如下:

librarymyfne;

uses

e,SysUtils,Classes;

{$R*.res}

{$Efne}//指定编译出的文件名后缀为"fne"

//易语言支持库要求的导出函数GetNewInf()

functionGetNewInf():

pLIB_INFO;stdcall;export;

begin

result:

=GetLibInfo();

end;

//函数导出表(exports)

exports

GetNewInf;

begin

DefineLib

'myfne','{5CAFDDB6-22E7-4B27-823A-A80A3919189F}',//szName,szGuid

'Delphi开发的一个简单的易语言支持库,主要用于演示。

',//szExplain

1,0,1,__GBK_LANG_VER,//nMajorVersion,nMinorVersion,nBuildNumber,nLanguage

0,//dwState

'大连大有吴涛易语言软件开发有限公司','','',//szAuthor,szHomePage,szOther

2,'0000分类1'#0'0000分类2'#0,//nCategoryCount,szzCategory

nil,nil,//pfnRunAddInFn,szzAddInFnInfo

nil,//pfnNotifyLib(canbenil,defaulttoDefaultProcessNotifyLib)

nil,//szzDependFiles

nil,//pfnFreeLibData

);

end.

将以上代码编译之后,即得到一个合法的空白的易语言支持库myfne.fne,此支持库还没有任何功能,但可被易语言正常加载。

请参考:

测试和调试。

以上代码,是我们在Delphi自动生成的代码骨架的基础上添加修改而成。

请注意以下几点:

引用(uses)了易语言官方提供的e.pas(或e.dcu)文件

通过编译指令({$Efne})指定了编译后的动态链接库的后缀名为"fne"(而非普通的"dll")

定义并导出(exports)了支持库规范所要求的GetNewInf()函数

通过调用DefineLib()函数定义了支持库的基本信息

支持库名称(即DefineLib()的第一个参数)和支持库的文件名称没有关系,可分别任意取名(一般前者为中文后者为英文)

代码中用到的GetLibInfo(),DefineLib()等都是e.pas中定义的函数/过程(如果有兴趣,不妨看看它们的内部实现代码)

begin段中的代码将在支持库被加载时自动执行

 

为了扩充这个空白的支持库,我们需要增加其它的代码。

又为了保持代码的相对独立,我们把新增加的代码放在一个新创建的Unit1.pas文件中:

unitUnit1;

interface

usese;

implementation

initialization

DefineConst('常量一','const1','这个常量一的说明,文本常量',CT_TEXT,0,'常量一的值(文本)');

DefineConst('常量二','const2','这个常量二的说明,数值常量',CT_NUM,1999,nil);

DefineConst('常量三','const3','这个常量三的说明,逻辑常量',CT_BOOL,1,nil);

end.

以上代码,是我们在Delphi自动生成的代码骨架的基础上添加修改而成。

请注意以下几点:

引用(uses)了e.pas(或e.dcu)文件

在initialization段中调用了DefineConst(),定义了三个易语言常量

DefineConst()是e.pas中定义的函数/过程

initialization段中的代码将在支持库加载时自动执行

再次编译支持库,其中将多出三个常量。

注意:

慎用initialization段,尤其是工程中存在多个.pas文件的情况。

数据类型

这一节主要介绍易语言支持库中,数据类型的标识,和数据类型的存储。

数据类型标识

在易语言支持库中,使用特定的数值来标识各种数据类型。

在定义命令的返回值类型、参数类型、成员类型等需要指定数据类型的地方,均需指定相应的标识数值。

以下是易语言基本数据类型与其标识数值对照表:

基本类型

标识

说明

 

字节型

SDT_BYTE

SDT_*等是e.pas中定义的数值常量,下同

 

短整数型

SDT_SHORT

 

整数型

SDT_INT

 

长整数型

SDT_INT64

 

小数型

SDT_FLOAT

 

双精度小数型

SDT_DOUBLE

 

逻辑型

SDT_BOOL

 

日期时间型

SDT_DATE_TIME

 

文本型

SDT_TEXT

 

字节集

SDT_BIN

 

子程序指针

SDT_SUB_PTR

 

条件语句型

SDT_STATMENT

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1