2015-02-18 54 views
-1

如何將此VB6代碼轉換爲Delphi?如何使用ScriptControl並加載Unicode res文件?

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) 
+0

首先需要決定如何在你的Delphi程序執行JavaScript?你有什麼打算? – 2015-02-18 07:30:14

+0

也許最簡單的方法是清理JavaScript並在Delphi中編寫代碼。不要覺得你必須逐字翻譯每一行代碼。隨意選擇更好的方法來解決問題。 – 2015-02-18 08:17:12

回答

3

首先這樣的:我同意@DavidHeffernan:請(拜託)搜索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; 
+3

這是問題的答案,但人們不禁覺得調用遠程js不是創建RSA密鑰的最佳方法 – 2015-02-18 09:12:59

+0

如果提問者沒有將js鏈接到可執行文件,它也不會讓我感到意外。 – 2015-02-18 09:17:11

+0

它說LoadResData是TResourceStream的作用,我假設提問者知道'.rc'和'.res'文件。 – 2015-02-18 09:31:59

相關問題