利用文件接口调用Delphi编写的API函数

利用文件接口调用Delphi编写的API函数!墨墨QQ墨:全曼CN13一l265/TE承德石油高等专科学校JournalofChengdePetroleumCollege第4卷第3期2002年9月Vo1.4No.3Sep.2002利用文件接口调用Delphi编写的API函数马晓晨(承德石油高等专科学校计算机与信息工程系,河北承德067000)摘要:在研究Windows操作系统API函数的基础上,深入分析了不同开发工具所编写的API函数的调用过程,通过事例提出了在VB环境中开发的应用程序利用文件接口调用Delphi编写的API函数的方法.关键词:接口lAPIl函数调用:TP31文献标识码:B:1008—9446(2002)03—0018—04动态链接库(DynamicLinkLibrary,简称DLL)是一些编译过的可执行代码模块,后缀名为DLL,可以在应用程序中或其他DLL中被调用.在Windows环境中,DLL可以实现多个应用程序共享代码和资源.MicrosoftWindows本身就是由若干个DLL组成的,其它应用程序可以调用这些库中的过程,完成窗口与图形的显示,内存管理或其他任务.这些过程有时被称为WindowsAPI,或应用程序接口.除了Windows提供的API之外,用户还可以开发自己的API,这种开发给程序开发带来了很多灵活性,使系统增加了许多新的功能和方法.而且DLL还独立于编程语言,利用某种开发工具编写的DLL可以在其他环境中使用,例如,在Delphi环境中开发的DLL程序可以在VisualC++环境中方便地使用;同时,在Delphi环境中也可以方便地使用在VisualC++开发的DLL.但是,在Delphi环境中编写的API函数并不是在所有的开发环境中都可以方便顺利的使用.本文以我在实际应用开发过程中调用Delphi环境中编写的API函数为例进行分析和说明.为了二次开发和扩展光谱采集与分析系统,购买了新的分光计设备,新设备功能强大,并提供了用Delphi编写的API函数,通过调用这些函数进行二次开发可使原系统的功能大大加强,原系统是用VB开发的,因此在扩展系统功能时需要在VB环境调用Delphi编写的API函数.下面谈一下调用时存在的问题及解决办法.l在VisualBasic调用Delphi编写的API函数时出现的问题分光计提供的API函数主要有:初始化设备SWDinit,关闭设备SWDclose,设置接收频率SWDrate,接收数据SWDscan,关闭设备SWDclose,在程序设计过程中,需要对这5个函数进行调用.由于DLL过程存在于VisualBasic应用程序之外的文件中,在使用时必须指定过程的位置和调用参数.可以用Declare语句提供这类信息.在声明了DLL过程之后,可以把它当做自己的过程使用.程序如下:OptionExplicitDeclareFunctionSWDinitLib"swdll初始化设备DeclareFunctionSWDcloseLib"swdll关闭设备DeclareFunctionSWDrateLib'swdll"(ByValchanAsInteger)设置接收频率DeclareFunctionSWDscanLib"swdll"(ByValchanAsInteger,bufferAsInteger)收稿日期:2002-03—19作者简介:马晓晨(1968一),男,承德石油高等专科学校计算机与信息工程系副主任,讲师,主要从事教学管理与计算机教学和研究工作.马晓晨:利用文件接口调用Delphi编写的API函数?19?AsLong'接收数据,接收成功返回接收数据的个数,接受不成功返回O,chan为传送数据的通道号.dimarrayl(Oto2050)Assingle;PrivateSubForm...——Load()SWDinit,初始化设备SWDrate(5),设置接收频率EndsubPrivateSubFormUnload(CancelAsInteger)SWDclose关闭设备EndSubPrivateSubCommand...——Click()SWDscan(1,array1())接受通道1的数据EndSub在程序执行过程中,不能正常接受数据,在调用SDWscan函数时采用其他传送参数地址的办法也没有成功.2采用文件做接Iz/,实现VB对Delphi编写的API函数的调用通过研究,利用文件做为VB和Delphi应用程序之间传递参数的接口,取得了较好的运行效果.利用Delphi编写调用API函数的程序,并把所采集的数据实时写入文件.利用VB编写的分析系统通过读取文件中的数据实现了对外部数据的采集.程序如下:2.1利用Delphi编写调用API函数的程序unitcollect此处省略一些Delphi的程序说明部分typeatype=array[0.2050]ofsingle;//定义接收数据的数组aptype=atype;∥定义数组指针变量TF0rml=class(TForm)//定义窗体Timerl:TTimer;//定义一个计时器控件定时采集数据,时间间隔属性初始化为1000.procedureFormCreate(Sender:TObject);procedureFormClose(Sender:TObject;varAction...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?