delphi 执行JS函数,再也不用担心JS怎么转换成pascal语言了!
因为引入OLE,则需要引入:ComObj, ActiveX; 在DELPHI 7 和 DELPHI D10.3中验证通过!
function FunRunJs(str: string): string;
var m_OLE : Variant;
StrList: TStringList;
begin
Result:='';
if Trim(str)='' then exit;
//创建JS变体类型
m_OLE := CreateOleObject('ScriptControl');
m_OLE.Language:='JavaScript';
StrList:= Tstringlist.Create;
try
//读取同目录下的JS文件
if not FileExists(ExtractFilePath(ParamStr(0)) + 'sign.dat') then exit;
StrList.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'sign.dat');
//将读取的文件加载至 m_OLE 中
m_OLE.AddCode(strlist.Text);
finally
StrList.Free;
end;
//线程中调用Variant 需要使用 CoInitialize,CoUnInitialize
CoInitialize(nil);
Result:=m_OLE.Eval('getStringSign("'+str+'")'); //调用 JS中方法,如果JS需要编码,则加入:UTF8Encode(str)
CoUnInitialize;
end;
本文介绍了一种在Delphi中执行JavaScript函数的方法,通过引入OLE对象,实现了JS与Pascal语言之间的无缝转换。适用于Delphi7和D10.3版本,文中详细展示了如何创建JS变体类型,读取并加载JS文件,以及在多线程环境中调用JS方法。
1172

被折叠的 条评论
为什么被折叠?



