聚合 管理  

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 林俊海 阅读(414) 评论(0)  编辑  收藏 所属分类: JAVA天地

只有注册用户登录后才能发表评论。


网站导航: