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

    相冊

    相關(guān)鏈接


    林俊海的博客

    超級大菜鳥,每天要自強(qiáng)!

    ?

    在上一篇中,我們說了如何用 Java 調(diào)用 Delphi 程序的一個方法并傳遞給其一個字符串參數(shù),現(xiàn)在我們再來看一下如果傳遞的參數(shù)是其它基本類型,又要怎么做.


    首先,我們先看一下如何傳遞 int 型參數(shù),定義如下的 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;

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

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

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

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

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

    例如: 我們要給 Delphi 的方法傳入一個 byte[] 型數(shù)組,在定義 Delphi 方法時參數(shù)聲明為 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);? //調(diào)用這個方法,可以將取得參數(shù) bytearray 的地址, isCopy 決定是否復(fù)制數(shù)組
    ?//之后,我們可以通過 PByteArr 結(jié)合 inc(PByteArr) 這個指針來操作傳過來的數(shù)組.
    end;


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

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

    評論

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

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

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

    我招你惹你了?  回復(fù)  更多評論
      

    主站蜘蛛池模板: 国产免费内射又粗又爽密桃视频| 全部免费a级毛片| 国产免费久久久久久无码| 亚洲国产精品成人精品小说| 自拍偷自拍亚洲精品被多人伦好爽 | 日韩大片在线永久免费观看网站| 亚洲性色成人av天堂| 亚洲热妇无码AV在线播放| 国产一区二区三区在线观看免费 | 污网站免费在线观看| 亚洲午夜国产精品无卡| 国产精品亚洲а∨无码播放| 免费jlzzjlzz在线播放视频| 无码高潮少妇毛多水多水免费| 91精品啪在线观看国产线免费| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 毛片免费全部播放一级| 2019中文字幕在线电影免费 | 国产91在线免费| 日韩一级视频免费观看| 无遮免费网站在线入口| 亚洲国产精品免费在线观看| 久久青草免费91线频观看不卡 | 四虎影视在线永久免费观看| 大陆一级毛片免费视频观看| 男女做羞羞的事视频免费观看无遮挡| 久久综合国产乱子伦精品免费| 精品免费视在线观看| 精品久久久久久国产免费了| 一级毛片成人免费看a| 黄色免费网站在线看| 日韩少妇内射免费播放| 边摸边吃奶边做爽免费视频99 | 国产伦一区二区三区免费| 国产在线观看免费不卡| 成人免费无码大片a毛片软件| 成人午夜18免费看| 成人毛片免费观看视频大全| 免费看a级黄色片| 免费日本黄色网址| 国产精品亚洲高清一区二区|