最近忙写一个用delphi调用matlab做的一个com组件程序,matlab代码如下:
function [x,y]=zxhs2(x1,x2)
x=x1:(x2-x1)/100:x2;
y=sin(x);
plot(x,y);
我已经生成了com组件 ,我该如何调用这段程序的结果呢:就是x这个数组,和y这个数组,该如何在delphi里面调用,我本来写了个delphi的代码 大家看看 那里 不对呢?恳请指点:
var
a,b,c,d:olevariant;
begin
c:=vararraycreate([0,100],vardouble);
d:=vararraycreate([0,100],vardouble);
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
zxhs21.zxhs2(2,c,d,a,b);
edit3.Text:=floattostr(c[1]);
end;end.我这段程序 的目的是想将x的结果赋值给c这个数组 然后再一个edit控件里面显示 某一个数,但是 这段程序运行 有错误啊怎么回事啊,恳请指点了 我是个新手。

解决方案 »

  1.   

    本人曾经利用matlab 7.0生成COM组件,但总是不行,在一个杂志上见过一篇文章:
    利用COM技术实现Delphi动态调用matlab,《电脑编程技巧与维护》,2008,4,P11。
      

  2.   

    我 也 看过 这边文章,但是就是弄不出来,貌似 他的返回值 不是数组我这个问题,要是我让matlab函数中返回值 为一个单值,我就会,但是 返回一个数组 我真不会了,不知道哪位高手  指点一下
      

  3.   

    对delphi熟悉的人可能不态了解matlab,需要将matlab输出的参数简单介绍一下,应该让人弄清楚com组件的输入和输出参数。另外a,b,c,d都是olevariant,怎么又把float类型的存进去?数组是double类型的,我对这些不太明白,感到较乱。
      

  4.   

    恩,有道理,但是我也不是很清楚,zxhs21.zxhs2(2,c,d,a,b);这个就是我在delphi里面调用的matlab函数,这里2,表示有2个输出,c,d表示输出,a,b表示输入(就是我在delphi里面输入的数据),至于楼主说的参数类型问题,我可能写错了,不知道怎么改较好,望赐教,谢谢。
      

  5.   

    本人的能力也非常的有限,只是提醒你将问题表达清楚,高手也只是在某一或某几个密切相关的领域,com组件提供了可按COM标准调用的方法,我只是提醒你将这个方法(函数)描述清楚,我很长时间没有弄matlab了,对那一个matlab函数也不了解,不清楚应该使用什么数据类型,记得matlab好象有float类型,还得请其他各位献言。
      

  6.   

    能否回答您使用的是那一个版本的matlab,以前本人曾以matlab 7.0和matlab 7.1配合VC 6.0尝试生成COM组件没有成功。