function DoJavascript(strJavaScriptContent: string): string;
var
  jscript: olevariant;
begin
  result := '';  try
    try
      jscript := CreateOleObject('ScriptControl');
      jscript.AllowUI := false;
      jscript.Language := 'JScript';      jscript.AddCode(strJavaScriptContent);
      result := jscript.Run('getResultString');
    except
      on e: exception do
      begin
showmessage('错误:'+e.message);
      end;
    end;
  finally
    //jscript.reset;
    jscript := UnAssigned;
  end;end;
test example:
JS代码正确的例子
for i:= 1 to 10000 do
begin
    s := DoJavascript('function getResultString(){return 123;}');
end;
JS代码不正确的例子
for i:= 1 to 10000 do
begin
    s := DoJavascript('function getResultString(){return 123'';}');
end;

解决方案 »

  1.   

    好像jscript没有释放?
    我一般都是用组件,就不觉得有什么不妥的http://lysoft.7u7.net
      

  2.   

    而获取Script执行错误是通过IActiveScriptError={EAE1BA61-A4ED-11cf-8F20-00805F2CD064}接口完成的
      

  3.   

    看看沒有
    jscript.quit;jscript.close;
    之類的方法jscript := UnAssigned;
      

  4.   

    问题已经基本发现,就是在XP,WIN2003上,基本没有内存泄露,
    而在WIN2000上,内存泄露特别明显,调用10000次,大约内存泄露100M左右。
    谁能帮我解决一下呀
      

  5.   

    谢谢 halfdream(哈欠) ,问题终于解决!
    我以前安装过IE6.0的SP1,和其他的一些补丁,有上面说的内存泄露,
    重新安装了IE6.0的SP1,内存泄露已经解决。我测试了3台WIN2000的机器,都是这个问题。估计是某个补丁,引起的问题。