【转载】VFP编写DLL,并调用
2024-09-07 21:58:03
1. 编制DLL文件 ,保存为Temp.prg
Define Class vfptools As Session OlePublic
Procedure Add As Integer
Lparameters p1,p2
Return p1 + p2
Endproc
Enddefine
2. 编制生成Project文件MyFox.pjt
Build Project myfox From temp.prg
3. 生成 DLL文件 MyFox.dll
Build Dll myfox From myfox
4.调用本DLL
Local loCom As 'MYFOX.VFPTOOLS'
loCom = Createobject('MYFOX.VFPTOOLS')
? LOCOM.Add (2,3)
5.结果
5
这样就可以了,而且在VFP编写代码的时候,当用到这个DLL还会智能提示DLL内部的函数
* ==============================================================================================================================
有两种 DLL 文件,一种是用 Declare 声明然后调用,这种文件 Copy 了就能用,但不能用智能提示,只能用专门的工具查看里面有什么东西,这种 Dll 一般是用 C 编写的。
另外一种是 COM 方式的 Dll ,用 Createobjectex() 或 Createobject() 调用,对象名的两部分组成,也不能直接看出,需要开发者提供,下面就可以用智能提示了。文件要注册(regsvr32),这种 Dll 许多语言都可以开发,也都可以调用,VFP 开发的 Dll 就属于这种。
能调用 COM 组件的开发工具都可以使用这种 Dll
Local loCom
loCom = Createobject('Mydll.Mydata')
*!* 示例:
* 首先建一个工程,如MyDll,
* 然后建一个主程序,如MyDllMain,
* 然后在这个主程序里写如下代码:
**********取得表中记录总数**********
Define Class MyData As Session OlePublic && 如果是VFP6-SP5以下,把SessionN改为Custom
Procedure GetDataCount
Lparameters tcTable
Select 0
Select Count(*) From (tcTable) Into Array curData
Use In (tcTable)
Return Alltrim(Str(curdata))
Endproc
Enddefine
编译时选择连编成DLL。
在VFP中调用这个DLL:
Local loCom
loCom = Createobject('Mydll.Mydata')
? loCom.GetDataCount('temp1') && temp1为表名
Release loCom
loCom = Null
Return
注:
1.session只能在VFP6.0+SP5开始才能使用,建议使用7.0或更高版本。若非要用6.0,则必须打补丁,或改用CUSTOM类。
2.编译成的DLL,与EXE一样,要用运行库,还必须同时发布 VFP[x]T.Dll文件([x]可为6、7、8或9)。
3.如果感觉用DLL不方便,那么可以编译成用vfp的exe文件,直接在其他开发工具中调用执行,只要定义数据接口就行。如:其他开发工具调用vfp的exe程序,vfp程序把结果输出到一个txt文件中,然后再由其他开发工具进行读取即可。
最新文章
- Java 引用
- recording just for inquiry in the future
- 在uwp仿制WPF的Window
- Linux shell脚本编程基础之练习篇
- IE6/IE7中display:inline-block解决办法
- linux定时器
- 堆和栈的区别【zz】
- 用Less循环生成样式
- java多线程检测可用IP
- 排序(4)---------希尔(shell)排序(C语言实现)
- SpringMVC集成shrio框架
- gulp环境搭建
- Unique-paths (动态规划)
- Python学习(四十一)—— Djago进阶
- 【Boost】boost::tokenizer详解
- 洛谷P3628 [APIO2010]特别行动队(动态规划,斜率优化,单调队列)
- Processing 与 C 相同和不同的地方
- HDUOJ----Coin Change
- SpringBoot使用AutoConfiguration自定义Starter
- How to revert your file&;folder by ";FOUND.000";
热门文章
- Spring bean装配流程和三级缓存
- react.js 实现音乐播放、下一曲、以及删除歌曲(仅播放列表)
- Vue学习之--------Vue生命周期beforeCreate、created、beforeMount、mounted、beforeDestroy 。。。(图解详细过程)(2022/7/17)
- golang开发一个简单的grpc
- go channel原理及使用场景
- Python3.11正式版,它来了!
- Codeforces Global Round 23 D.Paths on the Tree(记忆化搜索)
- csp2022第一轮游记
- 阿里云 ACK 接入观测云
- Kubernetes集群YAML文件详解