⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wzjh38.htm

📁 Delphi文摘精华.rar
💻 HTM
字号:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="GENERATOR" content="Microsoft FrontPage 3.0"><title>在Delphi与C++之间实现函数与对象共享</title></head><body><p align="center"><font size="6" color="#0000FF">在Delphi与C++之间实现函数与对象共享</font></p><div align="center"><center><table border="0" width="87%">  <tr>    <td width="100%"><p align="center">浙江省奉化市房地产管理处 邵辉</p>    <p>Delphi以其独特的面向控件的开发方式、强大的数据库功能以及快速的编译技术,使得它自发布起即格外引人注意。随着Delphi     3提供丰富的Internet应用,Delphi日益成为最重要的软件开发工具之一,它吸引了许多原Visual     Basic、Foxpro、dBase甚至C++的程序员,而这些程序员使用Delphi时需要解决的一个重要问题就是怎样利用他们原有的代码。本文将介绍Delphi与C++程序集成的方法,包括:<br>    <br>    Delphi与C++之间函数的共享;<br>    <br>    代码的静态链接和动态链接;<br>    <br>    对象的共享。<br>    </p>    <p>函数的共享<br>    <br>    在Delphi中调用C++函数与C++调用Delphi函数相当直接,需要注意的是,Delphi     1默认的函数调用方式是Pascal方式,Delphi 2、Delphi 3的默认方式则是优化的cdecl调用方式,即register方式。要在C++与Delphi程序之间实现函数共享,除非有充分的原因,否则应该使用标准系统调用方式,即stdcall方式。为了使C++编译器不将函数标记为&quot;mang     led&quot;,使Delphi编译器误认为函数是采用cdecl调用方式,应该在C++代码中,以extern     &quot;C &quot;说明被共享的函数,如下例所示:<br>    <br>    原型说明:<br>    在C++中:<br>    extern &quot;C&quot; int _stdcall TestFunc();<br>    在Delphi中:<br>    function TestFunc:integer; stdcall;<br>    <br>    调用语法:<br>    在C++中:<br>    int i=TestFunc();<br>    在Delphi中:<br>    var i:integer;<br>    …<br>    begin<br>    …<br>    i:=TestFunc;<br>    …<br>    end;<br>    <br>    共享函数的参数必须是两种语言都支持的变量类型,这是正确传递参数的前提。诸如Delphi的currency、string、set等变量类型,在C++中没有相对应的变量类型,不能被用作共享函数的参数。可以用PChar类型以值参的方式传递字符串指针,这时用户必须注意字符串空间的回收。<br>    Delphi语言中的变参应被说明成C++中相应变量类型的引用形式,如下:<br>    <br>    在Delphi中:<br>    function TestFunc(var i:integer):integer;<br>    在C++中:<br>    int TestFunc(int &amp;i);<br>    <br>    代码链接<br>    在Delphi与C++之间实现代码链接可采用静态链接或动态链接的方式。<br>    <br>    1.静态链接方式<br>    <br>    如果C++程序本身的代码量很小,而且无需担心与C运行库会有交互过程,一般可选用静态链接方式,即把Delphi与C++的目标文件(*.OBJ)链接成最终的可执行文件。具体的方法是使用{$L}编译指令,使Delphi编译器自动读取指定目标文件,说明如下:<br>    <br>    function TestFunc:integer;stdcall;<br>    {$L TestFunc.OBJ}<br>    <br>    2.动态链接方式<br>    <br>    如果C++代码已经相当全面或自成一个完整的子系统,代码量很大,或者用到了C运行库,在这种情况下,应该使用动态链接库(DLL)的方式。此时,在两种语言的源代码中应做如下说明:<br>    <br>    在C++中:<br>    int stdcall export TestFunc();<br>    在Delphi中:<br>    function TestFunc:integer; stdcall;<br>    external ‘TestFunc.DLL’;<br>    <br>    对象的共享<br>    <br>    在C++与Delphi之间的对象共享主要体现在对象方法(Method)的共享方面,这种共享可分为两个层次:对象(Object)级共享与类(Class)级共享。要实现对象级共享,程序设计语言需具备两个前提条件:<br>    <br>    &nbsp; 能够定义指向由另一语言创建的对象的指针;<br>    <br>    可以访问由指针确定的对象中的方法。<br>    <br>    要实现类级的共享,则还需考虑:<br>    <br>    &nbsp; 能够创建由另一种语言定义的类的实例;<br>    <br>    可以从堆中释放一个实例所占用的空间;<br>    <br>    派生新的类。<br>    <br>    以下介绍在Delphi与Borland C++之间实现对象共享的方法。<br>    <br>    1.C++共享Delphi对象<br>    <br>    要实现从C++调用Delphi对象,首先要在Delphi单元的接口部分以及C++的头文件中说明需要共享的对象的接口,在对象接口中定义该对象包含哪些属性与方法,并说明可供共享的部分。对象的共享,关键在于方法的共享。在Delphi语言中,要使一个对象可以被共享,可以把它说明为两个接口部分,暂称为&quot;共享接口&quot;与&quot;实现接口&quot;。其中共享接口指明对象中哪些方法可被另一种语言所共享;实现接口则继承共享接口,并且在单元实现部分针对

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -