Delphi与Matlab混合编程的设计与实现 联系客服

发布时间 : 星期日 文章Delphi与Matlab混合编程的设计与实现更新完毕开始阅读e9917d222f60ddccda38a0c4

图1 MATLAB COM Builder启动操作过程 图2 MATLAB COM Builder窗口

3. 编译M文件

在MATLAB COM Builder中点击File菜单,选择New Project?,弹出New Project Settings窗口;在Component name文本框中输入要生成的COM组件的名字,如curfitclass,输入后会自动产生curfitclass类,并在Classes中出现,可使用Add、Remove增加或删除类;Project version是为了用户方便地管理自己所生成的COM组件而设置的,通过这个版本号,用户可以方便地区分不同时期制作的相同名字的COM组件;Project directory是整个工程存放的目录;因为C代码性能较好,在Compile code in里面推荐选择C;在Compiler options选项框中有三个选项,Use Handle Graphics Library表示使用MATLAB的图形库,即使用画图功能;Build debug version表示生成调试版本的COM组件,调试版本的COM组件在调试的时候如果有错误发生,就会有相应的错误提示信息,可以方便地定位错误发生的地方,而不是Debug版本的COM在出错时不会给出任何的错误提示信息;Show verbose output表示在编译生成COM组件的时候输出详细的过程信息。New Project Settings窗口的设置如图3所示。

New Project Settings窗口设置完毕并点击OK后,需要向建立的类中添加M文件,其方法是在Project Files里面选中要操作的类,单击Add File按钮添加现成的(预先编写好的)m函数文件。本文需把curvefit.m文件加入,这样就为类添加了一个方法。所有函数添加完毕之后,就可以使用菜单Build→COM Object或者单击按纽Build进行编译。当Build Status中出现Standalone DLL build complete.时,表示COM组件已经编译完成,如图4所示。编译完毕之后会建立一个以类命名的文件夹,里面又包含两个文件夹:一个是src,里面存放的是一些中间文件;一个是distrib,里面就是动态链接库形式的COM组件文件,即我们需要的DLL文件。在编译完毕之后,MATLAB会自动注册生成的组件。

图3 New Project Settings设置窗口 图4 COM组件编译完成信息

单击Component→Component Info?可以查看所建组件的详细信息,如图5所示,其中包括组件中的类、方法、属性、事件等。类curfitclass包括方法curvefit()、属性N。可以看出,只需按一定格式设计M文件,COM组件就会自动转换:M文件中的函数被编译为方法,用global声明的全局变量编译为属性,包含注释“%#event”的函数则被声明为事件。

图5 生成的COM组件信息 图6 Delphi中COM组件的安

五、动态调用COM的组件

1. 安装COM组件

启动Delphi,点击Delphi的Project→Impot Type Library?,出现如图6所示的界面。在上面的窗口中找到curfitclass 1.0 Type Library [Version1.0],然后点击Install?按钮就在ActiveX类组件页中出现curfitclass组件,如图7所示,此时就可以应用该组件了。

图7 位于ActiveX类中的curfitclass组件

2. 应用COM组件

在Delphi中新建工程Project1,按图8布置Form1窗体,其中部分组件功能如下表所示。实现的核心代码如下:

Form1中的组件表

组件 设置 功能