<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    聚合 管理  

    Blog Stats

    News

    我使用新博客啦:
    http://www.linjunhai.com/
    大家到我的新博客上看看吧!

    隨筆分類(28)

    文章分類(4)

    隨筆檔案(53)

    文章檔案(4)

    相冊

    相關鏈接


    林俊海的博客

    超級大菜鳥,每天要自強!

    現在難得來看一下自己的博客,今天好不容易找了個代理,順便再繼續之前的話題,就是 JAVA 與 Delphi 的交互了.

    在上一篇中,我們說了如何用 Java 調用 Delphi 程序的一個方法,今天我們再深入一點,就是怎樣提交參數個 Delphi 的方法,以動態的控制 Delphi 的方法.
    下面,我們切入正題.

    首先,我們定義如下的 Java 類:

    //----------------------------------------------------------------------------------------------------------
    package alvinJNI;

    class HelloWorld {
    ??????? static {
    ??????????????? System.loadLibrary("DelphiAction");
    ??????? }

    ??????? public native void printText(String str);

    ??????? public static void main(String[] args) {
    ??????????????? HelloWorld hw = new HelloWorld();
    ??????????????? hw.printText("您好!看到效果了吧。");
    ??????? }

    }
    //----------------------------------------------------------------------------------------------------------

    我們再像上次一樣在 Delphi 中建立 DLL 工程,寫下面的代碼(有注釋):

    //----------------------------------------------------------------------------------------------------------
    library DelphiAction;

    uses
    ? JNI;

    //這一次我們要寫的這個方法因為要接收一個 Java 傳過來的參數,所以我們來說一下這個參數列表的問題
    //參數列表中的第一個參數 PEnv 類型為 PJNIEnv, 它是 JNI.pas中定義的類型,我們好多工作要通過它來實現,可以把它看成是一個幫你的程序與 Java 溝通的橋梁.
    //參數列表中的第一個參數 obj 類型為 JObject.前面這兩個參數是固定的,這第二個參數暫時我們還不會用到.
    //今天,我們還要給這個方法多加一個參數,用來接受 Java 傳過來的參數. str: JString

    procedure Java_alvinJNI_HelloWorld_printText(PEnv: PJNIEnv; Obj: JObject; str: JString); stdcall;
    //這回我們需要用到一個 TJNIEnv 對象,我們來聲明
    var
    ? JVM: TJNIEnv;
    ? tmpStr: String;

    begin
    ? //實例化 JVM, 這個對象可以看成是 Java 的虛擬機.(自己的理解)
    ? JVM := TJNIEnv.Create(PEnv);

    ? //參數提交過來的字符串,實際上是一個 JString 對象,我們在這里要用 JVM 來轉化它.
    ? //我們調用 JVM 的 UnicodeJStringToString 函數就可以實現 JString 到 String 的轉化了.
    ? tmpStr := JVM.UnicodeJStringToString(str);

    ? Writeln(tmpStr);

    ? //我們使用完 JVM 后,要將其釋放.
    ? JVM.Free;
    end;

    exports
    ??????? Java_alvinJNI_HelloWorld_printText; //為函數做引出聲明,這樣才能真正的被調用到
    end.
    //----------------------------------------------------------------------------------------------------------

    我們現在就可以生成 DelphiAction.dll 將其放在 Java 工程目錄下, 再執行 alvinJNI.HelloWorld 看看效果了.

    好了,我們今天主要就是實現了一下,如何在 Java 調用 Delphi 的方法時,給其提交一個參數.
    是不是很爽?

    今天就先說到這里.接下來,我會盡快的再貼上一些文章

    posted on 2006-12-01 21:30 林俊海 閱讀(422) 評論(0)  編輯  收藏 所屬分類: JAVA天地
    主站蜘蛛池模板: 曰批视频免费40分钟试看天天 | 午夜亚洲www湿好大| 无码中文字幕av免费放| 免费无码H肉动漫在线观看麻豆| 亚洲日韩国产欧美一区二区三区 | 一级毛片免费不卡在线| 一区二区免费国产在线观看| 亚洲欧洲无码一区二区三区| 911精品国产亚洲日本美国韩国| 亚洲第一黄片大全| 四虎免费久久影院| 久久精品女人天堂AV免费观看| 亚洲视频免费在线观看| 久久毛片免费看一区二区三区| 色欲aⅴ亚洲情无码AV| 国产成人亚洲合集青青草原精品 | 中文字幕乱码免费看电影| 美女被吸屁股免费网站| 亚洲国产欧美一区二区三区| 亚洲va成无码人在线观看| 亚洲第一区视频在线观看| 亚洲毛片在线观看| 亚洲激情在线观看| 久久亚洲成a人片| 亚洲国产精品国自产拍AV| 中文字幕亚洲乱码熟女一区二区 | 一级一看免费完整版毛片| 美女被免费网站视频在线| 久久亚洲AV成人无码国产最大| 亚洲AV噜噜一区二区三区| 亚洲国产AV无码一区二区三区| 国产 亚洲 中文在线 字幕| 国产成人精品日本亚洲专| 亚洲一卡2卡3卡4卡5卡6卡| 中文字幕亚洲精品无码| 亚洲精品无码久久久久A片苍井空| 在线亚洲午夜片AV大片| 亚洲性无码AV中文字幕| 亚洲成av人在线观看网站| 亚洲aⅴ天堂av天堂无码麻豆 | 国产成人无码免费视频97|