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;