#include <vcl.h>
#include <Variants.hpp>
#include <ComObj.hpp> //
#pragma hdrstop
#include "Unit4.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TJavaScriptForm *JavaScriptForm;
//---------------------------------------------------------------------------
__fastcall TJavaScriptForm::TJavaScriptForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
String __fastcall TJavaScriptForm::RunJs(String JsCode, String JsVar) //运行 JaveScr 代码
{
//此函数 需要 ComObj 单元的支持
//参数 Jscode 是要执行的 Js 代码; 参数 JsVar 是要返回的变量
Variant script; //使用OleVariant的话 会报错
try {
script = CreateOleObject("MSScriptControl.ScriptControl.1");
script.OlePropertySet("Language", "JavaScript");
script.OleFunction("ExecuteStatement", JsCode.c_str());
return script.OleFunction("Eval", JsVar.c_str());
} catch (...)
{
return "";
}
}
//---------------------------------------------------------------------------
void __fastcall TJavaScriptForm::Button1Click(TObject *Sender)
{
//
String Val;
String Ret;
Ret = RunJs(Memo1->Text, "str");
ShowMessage(Ret);
}
//---------------------------------------------------------------------------
在delphi 中 按照参照网站上的代码就可以实现,如果在bcb中直接写script.Language 就会报错。需要调用函数。这点没有delphi中直观。或许还有别的方法。
参考中有一个查看ocx 参数的截图,不清楚他是用什么软件看的,我只知道vc6 有个 OleView 可以看,望知道的人赐教。
运行截图:
参考:
http://www.cnblogs.com/del/archive/2008/08/06/1261580.html
http://blog.sina.com.cn/s/blog_414cc36d0100q7ip.html
http://school.cnd8.com/delphi/jiaocheng/7087.htm