读书人

delphi中SafeArray的读写有关问题中的

发布时间: 2012-04-04 16:38:51 作者: rapoo

delphi中SafeArray的读写问题请教高手中的高手!
delphi中操作SafeArray的两个关键函数SafeArrayPutElement()和SafeArrayGetElement()怎么用,有没有实际用过的高手给解释一下各参数的含义啊,谢谢了。

[解决办法]
先声明一下
下面这段代码不是我写的,网上说是hubdog写的,如果对楼主有帮助,一起向作者致敬吧

Delphi(Pascal) code
SafeArray的使用非常麻烦,下面是写过的一段为ScriptControl添加自定义函数并调用的代码,就用到了SafeArray    procedure TForm1.Button1Click(Sender: TObject);    var      n:Integer;      Parameters:PSafeArray;      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; 

读书人网 >.NET

热点推荐