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

时间:2015-02-18 00:04:26

标签: delphi vb6 code-conversion scriptcontrol

如何将此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)

1 个答案:

答案 0 :(得分:3)

首先:我同意@DavidHeffernan:请(非常请)搜索在Delphi中执行逻辑的方法。

请按照以下步骤操作:

  • 找到导入类型库菜单功能,具体取决于Delphi版本,它可能位于不同的顶级菜单(通常是组件或工具)下,或者具有不同的名称(导入ActiveX,导入COM对象...)
  • 从已知类型库的列表中,选择" Microsoft脚本控制",列表中的最高版本(但可能它仍然只是版本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;