读书人

怎么通过ScriptControl访问js中的数组

发布时间: 2012-10-11 10:16:10 作者: rapoo

如何通过ScriptControl访问js中的数组元素?
如后面所述,取得classname的值没问题,但和数组有关的就不会了.搜索了一下,有个叫IEnumVariant的接口可能有关系,但网上的例子和我使用的ScriptControl环境有较大区别,没找到办法用上。

代码如后,补充:
mmoJson的内容:
{"classname":"初二一班","pupils":[{"name":"张三","sex":"男"},{"name":"李四","sex":"女"}]}

mmoJs的内容:

JScript code
    function testMain(sJson){var myObject = eval('(' + sJson + ')');        return(myObject);    }


Delphi(Pascal) code
unit uFormMain;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type  TFormMain = class(TForm)    Button1: TButton;    mmoJs: TMemo;    mmoJson: TMemo;    procedure Button1Click(Sender: TObject);  private    { Private declarations }    function GetJsObject(Source:string):OleVariant;  public    { Public declarations }  end;var  FormMain: TFormMain;implementationuses  ComObj,ActiveX;{$R *.dfm}procedure TFormMain.Button1Click(Sender: TObject);var  obj,retVal:OleVariant;  code:WideString;begin  obj:= GetJsObject(mmoJson.Text);  showmessage(obj.classname);  //如何读取pupils下面的数组(或叫集合)数据呢?  //目前只知道在VB6中可For Each oPupil In obj.pupils遍历访问end; function TFormMain.GetJsObject(Source: string): OleVariant;var obj,retVal:OleVariant; code:WideString;begin code:=mmoJs.Text; obj:=CreateOleObject('MSScriptControl.ScriptControl'); obj.Language:='javascript'; obj.AddCode(code); retVal:=obj.Run('testMain',Source); if VarIsNull(retVal) then   Result:='' else   Result:=retVal;end;end.


[解决办法]
看下这篇文章,应该可以解决你的问题
http://blog.csdn.net/jayqiang/article/details/7066824
[解决办法]
不知道怎么回答

读书人网 >.NET

热点推荐