Delphi7 调用 高版本XE DLL例子

水平有限,工作几年发现还是初级工程师水平,只会调用DLL,不会写DLL,网上多个例子都看不懂.惭愧.记录下,方便以后查询.

请各位大神指点.

公司Delphi7开发的管理系统,随着时间推移,需要对接很多WebService之类的东西.操作Sqlite数据库之类,Delphi7不安装第三方控件之类支持度不好,而高版本Delphi Xe8很能满足这些要求.

所以就想用Delphi Xe8开发一些Dll,让Delphi7程序使用.

基本流程都一样,记录下自己的注意要点:

1:DLL的Exports内容只需要过程或者函数名称,不需要参数,另外可以写多个Exports,以分号隔开,或者过程名称以逗号隔开.注意stdcall结尾.

2:最好有一个中间类来操作第三方接口/窗体.这样不需要写太多DLL函数,以参数来区分,DLL内部调用第三方接口/窗体功能.

3:中间类处理好创建和销毁第三方接口/窗体事件.(DLL内部销毁有时候不靠谱,内存报错,按网上的办法怎么也没办法实现,还是自己手动控制).

4:高低版本字符类型.推荐使用PAnsiChar,但是注意AnsiString函数,不然你会只得到第一个字节内容.转换如下:

   string = strpas(PAnsiChar)     PAnsiChar = PAnsiChar(AnsiString(string))

5:最好引用ActiveX单元.并添加以下内容

initialization
Coinitialize(nil);//初始化COM
finalization
CoUninitialize;//释放COM

6:暂时Dll只是单独调用,内部创建都用Assigned来处理第三方接口/窗体是否重复,所有均为静态调用,后续使用到窗体重复显示再来更新.

 

posted on 2017-12-20 11:24  Frank_顺子  阅读(606)  评论(0)    收藏  举报

导航