XE7下調用JAR問題 |
答題得分者是:aftcast
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
我的APP需要調用第三方Codebar工具,廠家提供了Jar包,我用java2op.exe導出pascal接口文件:
[code delphi] // ===== Interface declarations ===== JBarCode2_ScanResultClass = interface(IJavaClass) ['{332B0E9C-523A-49FF-88DA-03E31B4A1AC3}'] end; [JavaSignature('com/capipad/BarCode2/ScanResult')] JBarCode2_ScanResult = interface(IJavaInstance) ['{67743632-1D2F-447B-8468-90222ED141EA}'] procedure onResult(P1: JString); cdecl; end; TJBarCode2_ScanResult = class(TJavaGenericImport Jbarcode2Class = interface(JObjectClass) ['{C3E80538-E607-4E5D-BF9C-3958E262B003}'] {class} function BarCodeDeInit: Integer; cdecl; {class} procedure BarCodeHandFreeRead; cdecl; {class} function BarCodeInit: Integer; cdecl; {class} procedure BarCodeRead; cdecl; {class} function init: Jbarcode2; cdecl; {class} procedure registScanDataListen(P1: JBarCode2_ScanResult); cdecl; {class} procedure unregistScanDataListen; cdecl; end; [/code] 其中JBarCode2_ScanResult中有個onResult事件,我不知道在Delphi下應該如何實現調用? 我在廠家提供的Java Demo中看到Java中調用是這樣的: [code cpp] barcode2.registScanDataListen(new ScanResult() { @Override public void onResult(String data) { if (data != null && !data.isEmpty()) { msgTextView.append("扫描结果:\n" data "\n"); } else { mStateView.setText("扫描失败!"); } } } }); [/code] 面jar包中的ScanResult是個接口: [code cpp] package com.capipad.BarCode2; public interface ScanResult { void onResult(java.lang.String s); } [/code]
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
for example:
TJBarCode2_ScanResultClass = class (TJavaLocal, JBarCode2_ScanResultClass) …… 實作 procedure onResult(P1: JString); cdecl; barcode2.registScanDataListen( TJBarCode2_ScanResultClass.create ) 細節官網沒有,一般也難google到,我是自己讀了delphi源碼,加上對java的了解,才知道的。若有興趣,我可以和你說,它與java之proxy class (reflection有關),加上 TJavaLocal 與 embt在它的 classes.dex裡有應用的java程式。才能夠在 delphi 裡去實作 java的 interface,而以 delphi的object 來"騙" java 該object 是java object… 沒興趣去理解就不用管了。 可讀TRunnable = class (TJavaLocal, JRunnable) 這個源碼。Runnable這個interface在Java的世界中經常性的會出現。
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2015-03-02 12:36:20, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |