作者:吳祐賓
最近我的程式莫名出現了:EOleSysError: 類別未登錄, ProgID: "MSScriptControl.ScriptControl" 的錯誤訊息。一查才知道原來是 Windows 沒有提供 Microsoft Script Control 64 位元版本,但許多程式會用到 JScript。遇到這難題該怎麼處理呢?
使用外掛 Tablacus Script Control 64
外國網友 Gaku 提供了好用的 OCX 套件:Tablacus Script Control 64。現有的程式幾乎不用修改就可以使用。缺點是必須要另外安裝。截取官方範例如下:
var SC = new ActiveXObject("ScriptControl");
SC.Language = "JScript";
SC.AddObject("WScript", WScript);
SC.AddCode('function fnx(a,b,c){ WScript.Echo(a + ":" + b + ":" + c) }');
SC.Run("fnx", 1, "data2", "data3");
使用直譯式工具 FastScript
FastScript 是 FastReport 公司旗下的直譯式跨語言開發套件,可在不開啟程式編譯器的場合下做簡易的程式開發。使用起來也相當簡單。缺點就是 JScript 語言支援度比微軟老舊的 JScript 版本更為受限。
procedure TForm2.Button1Click(Sender: TObject);
var
LfsResult: Variant;
begin
fsScript1.Clear;
fsScript1.Parent := fsGlobalUnit;
fsScript1.SyntaxType := 'JScript';
fsScript1.Lines.Text := 'function jMethod(a, b){return a+b}';
if fsScript1.Compile then
begin
LfsResult := fsScript1.CallFunction('jMethod',VarArrayOf([1, 1]));
ShowMessage(LfsResult);
end;
end;
總結
兩種解決方案各有優缺點,使用者可根據自身需求進行選擇:
若需要使用現有的程式,且對相容性要求較高,採用 Tablacus Script Control 64 外掛可以很快進入狀況
若需要快速開發簡易的 JScript 程式,或對相容性要求不高,則可以使用 FastScript 直譯式工具
其他注意事項
使用 Tablacus Script Control 64
外掛時,需注意其版本與 Windows 系統的版本是否相符。
使用 FastScript 直譯式工具時,需注意其對 JScript 語言的支持程度。
本文介紹了兩種解決
Windows 64 位元系統下使用 JScript 的方案,希望能對相關使用者有所幫助。
和你分享
See also
- FASTSCRIPT脚本实现多国语言
- Microsoft Script Control 64 bit?
- Tablacus Script Control 64
- FastScript 1.9 Scripting library Developer's manual
- 文首圖片來源:攝影師:Gül Işık: https://www.pexels.com/zh-tw/photo/3957616/