<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 程序的一個方法并傳遞給其一個字符串參數,現在我們再來看一下如果傳遞的參數是其它基本類型,又要怎么做.


    首先,我們先看一下如何傳遞 int 型參數,定義如下的 Java 類:

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

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

    ??????? public native void printText(int i);

    ??????? public static void main(String[] args) {
    ??????????????? HelloWorld hw = new HelloWorld();
    ??????????????? hw.printText(100);
    ??????? }

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

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

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

    uses
    ? JNI;

    //我們給這個方法加的參數是: i: JInt
    procedure Java_alvinJNI_HelloWorld_printText(PEnv: PJNIEnv; Obj: JObject; i: JInt); stdcall;
    var
    ? tmpInt: Integer;

    begin
    ? //參數提交過來的 int 型數據,在這里是一個 JInt 數據,它其實就是一個 Integer 數據,它的使用更加方便
    ? //它可以直接地參與 Interger 類型數據的運算,是不是很容易.
    ? tmpInt := i + 100;
    ? tmpInt := tmpInt - 100;
    ? Writeln(tmpInt);
    end;

    exports
    ??????? Java_alvinJNI_HelloWorld_printText;
    end.
    //----------------------------------------------------------------------------------------------------------

    再看看效果吧,是不是成功了?

    這里如果是 long 型參數,接收時要設為 JLong 類型,它也可以跟對應的整型數運算,我們常用它跟 Int64 一起運算
    如果參數類型是 float ,接收參數時要設為 JFloat 類型,它也可以跟跟 Single 一起運算
    如果參數類型是 double ,接收參數時要設為 JDouble 類型,它也可以跟跟 Delphi 中的 Double 型數據一起運算
    如果參數類型是 boolean ,接收參數時要設為 JBoolean 類型,它也可以跟跟 Delphi 中的布爾型數據一起運算
    如果參數類型是 short ,接收參數時要設為 JShort 類型,它也可以跟跟 SmallInt 型數據一起運算
    如果參數類型是 byte ,接收參數時要設為 JByte 類型,它也可以跟跟 ShortInt 型數據一起運算
    如果參數類型是 Object 的 Java 對象,接收時要設為 JObject 類型,它的用法比較復雜(涉及到對 Java 類和對象的操作),我們在以后再來學習.
    如果參數類型是 Type[] 數組,接收參數時要設為 JObject 類型,因為 Java 是把數組作為對象看待的.它要以以下的方式來使用:

    例如: 我們要給 Delphi 的方法傳入一個 byte[] 型數組,在定義 Delphi 方法時參數聲明為 bytearray: JObject

    在方法中:
    var
    ?PByteArr: PJByte?? //PJByte 是 JNI.pas 定義的, 里面還有 PJBoolean, PJObject, PJInt 等..
    ?JVM: TJNIEnv;
    ?isCopy: Boolean;
    begin
    ?JVM:= TJNIEnv.Create(PEnv);
    ?isCopy := false;
    ?PByteArr := JVM.GetByteArrayElements(bytearray, isCopy);? //調用這個方法,可以將取得參數 bytearray 的地址, isCopy 決定是否復制數組
    ?//之后,我們可以通過 PByteArr 結合 inc(PByteArr) 這個指針來操作傳過來的數組.
    end;


    好了,就先說到這里,今天,你是不是又學到了什么?

    posted on 2006-12-02 03:12 林俊海 閱讀(577) 評論(3)  編輯  收藏 所屬分類: JAVA天地

    評論

    # re: 通過 JNI 讓 JAVA 與 Delphi 程序交互(三) 2008-06-07 16:57 何雙湛
    你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八你王八  回復  更多評論
      

    # re: 通過 JNI 讓 JAVA 與 Delphi 程序交互(三) 2008-06-07 17:01 鄙視湛↓------斌
    老樓上的垃圾就會叫 棧你這吃屎的東西!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!傻逼傻逼傻逼傻逼傻逼傻逼傻逼傻逼傻傻逼傻逼傻逼逼傻逼傻逼傻逼傻傻逼傻逼傻逼逼傻逼傻逼傻逼傻逼傻逼傻逼傻傻逼傻逼傻逼逼傻逼傻逼傻逼傻逼傻逼傻逼傻傻逼傻逼傻傻逼傻逼傻逼傻逼傻逼傻傻逼傻逼傻逼逼傻逼逼逼傻逼傻逼傻逼傻逼傻傻逼傻逼傻逼傻逼傻逼傻傻逼傻逼傻逼逼傻逼逼傻逼傻傻逼傻逼傻逼逼傻逼傻傻逼傻逼傻逼傻逼傻逼傻傻逼傻逼傻逼逼傻逼逼傻逼傻逼傻逼傻逼傻傻逼傻逼傻逼逼傻逼  回復  更多評論
      

    # re: 通過 JNI 讓 JAVA 與 Delphi 程序交互(三) 2008-06-07 17:56 林志斌
    @何雙湛

    我招你惹你了?  回復  更多評論
      

    主站蜘蛛池模板: 欧洲亚洲国产精华液| 亚洲中文字幕丝袜制服一区| 亚洲一区二区三区丝袜| 内射无码专区久久亚洲| 国产免费网站看v片在线| 亚洲午夜电影在线观看高清 | 99视频在线精品免费观看6| 亚洲av激情无码专区在线播放| 国产h视频在线观看免费| www.xxxx.com日本免费| 亚洲日韩在线视频| 亚洲国产成人精品女人久久久 | 精精国产www视频在线观看免费| 中文字幕亚洲第一在线| 国产精品色午夜视频免费看 | 在线亚洲精品福利网址导航| 亚洲美女免费视频| 免费看黄福利app导航看一下黄色录像 | 国产午夜精品免费一区二区三区| 亚洲a级在线观看| 亚洲精品白浆高清久久久久久| 久久久久免费看黄A片APP | 色妞WWW精品免费视频| 中国人免费观看高清在线观看二区| 亚洲色欲色欲www| 亚洲va无码手机在线电影| 精品无码国产污污污免费| 免费人成视频在线观看网站| 免费的黄色的网站| 色在线亚洲视频www| 亚洲国产精品一区二区第一页| 国产精品无码素人福利免费| 99久久99这里只有免费费精品| 中国性猛交xxxxx免费看| 国产亚洲精品仙踪林在线播放| 亚洲免费观看网站| 亚洲欧洲日韩不卡| 亚洲精品无码mv在线观看网站| 国产在线观看免费不卡| 在线观看免费毛片| 黄色片在线免费观看|