如何使用 ScriptControl 和加载 Unicode res 文件?



如何将此VB6代码转换为Delphi?

strConv(a, vbUnicode)

Private cScript As New ScriptControl
cScript.Language = "Javascript"
cScript.Reset
cScript.AddCode StrConv(LoadResData(101, "RSADATA"), vbUnicode)
cScript.Run("createRsaKey", data1 , data2)

首先:我同意@DavidHeffernan的观点:请(漂亮的)搜索一种在Delphi中执行逻辑的方法。

遵循以下步骤:

  • 查找Import Type Library菜单函数,根据Delphi版本,它可能位于不同的顶部菜单下(通常是组件或工具),或者具有不同的名称(Import ActiveX,Import COM object…)
  • 从已知类型库列表中,选择列表中的最高版本"Microsoft Script Control"(但很可能它仍然只是1.0版本)
  • 创建包装单元

然后使用TScriptControl对象的实例,可能如下所示:

var
  sc:TScriptControl;
  sa:PSafeArray;
  code:WideString;
  rs:TResourceStream;
begin
  rs:=TResourceStream.Create(HInstance,'RSADATA',MakeIntResource(101));
  try
    SetLength(code,rs.Size div 2);
    rs.Read(PWideChar(code)^,rs.Size);
  finally
    rs.Free;
  end;
  sc:=TScriptControl.Create(nil);
  try
    sc.Language:='Javascript';
    sc.Reset;
    sc.AddCode(code);
    sa:=PSafeArray(TVarData(VarArrayOf([data1,data2])).VArray);
    sc.Run('createRsaKey',sa);
  finally
    sc.Free;
  end;
end;

最新更新