http://www.delphibbs.com/delphibbs/dispq.asp?lid=836065
SafeArray问题,如果你会一点,为何不帮我一点,谢谢了!
下面是这个帖子里面的部分内容
SafeArray的使用非常麻烦,下面是写过的一段为ScriptControl添加自定义函数并调用的代码
,就用到了SafeArray
procedure TForm1.Button1Click(Sender: TObject);
var
n:Integer;
Parameters
SafeArray;
bound:TSAFEARRAYBOUND;
Index:integer;
v:Variant;
begin
//
try
n:=StrToInt(inputbox('demo','请输入要计算阶乘的数',''));
except
ShowMessage('输入有误,必须输入数字,请重新运行');
Exit;
end;
ScriptControl1.Reset;
ScriptControl1.Language:='JScript';
//添加阶乘函数
scriptcontrol1.addCode('function factorial(num){'+
'result=1;for(ix=1;ix<=num;ix++){'+
'result = result*ix;};return result;};');
//参数为一维有一个元素的SafeArray
bound.lLbound:=0;
bound.cElements:=1;
try
Parameters := SafeArrayCreate(VT_VARIANT, 1, bound);
except
ShowMessage('分配内存错误');
Exit;
end;
//因为SafeArrayPutElement的第二个参数定义为const类型,
//所以index必须定义为变量并赋值才能被调用
V:=n;
Index:=0;
SafeArrayPutElement(Parameters,Index,V);
try
ShowMessage(ScriptControl1.Run('factorial',Parameters));
finally
SafeArrayDestroy(Parameters);
end;
end;
--------------------------------------
http://www.delphibbs.com/delphibbs/dispq.asp?lid=216449
怎样在Delphi中调用Matlab ActiveX接口中的GetFullMatrix和PutFullMatrix命令