delphi写jni是byte[]属性对象数据传递问题 ( 积分: 200 )

  • 主题发起人 主题发起人 blueidealer
  • 开始时间 开始时间
B

blueidealer

Unregistered / Unconfirmed
GUEST, unregistred user!
在java中有
public class TestObj{
public String name;
public byte[] data;
}
public class main{
static { System.loadLibrary("mytest"); }
public native static TestObj test(TestObj obj);//将java对象作为参数调用delphi的dll,同时返回的也是java对象


public static void main(String[] args) {
TestObj o1=new TestObj();
TestObj o2=Main.test(o1);
}
}
在delphi 的dll中如何获得参数传过去的 TestObj对象中的 data属性中的byte[]数据? 如何将delphi的byte array 写入返回TestObj对象的data属性中去?
 
读出byte[]属性已经可以,但现在要写入java对象的数组属性该如何实现?下面是读出的代码:
function Java_MyNativeInvoke_test(PEnv: PJNIEnv; Obj: JObject; b:JObject):JObject; stdcall;
var
JVM: TJNIEnv;
c,c2: JClass;
fid:JFieldID;
mid:JMethodID;
myBarcode:TBarcode;
// arrObj:JObject;

bytearray: JObject ;
PByteArr: PJByte;
ff:Boolean;
begin
JVM := TJNIEnv.Create(PEnv);
c:=JVM.GetObjectClass(b);
fid:=JVM.GetFieldID(c,'data','[B');
bytearray:= JVM.GetObjectField(b,fid);
ff := false;
PByteArr := JVM.GetByteArrayElements(bytearray, ff);
JVM.Free;

result:=b;
end;
 
期待高手指点.
 
这东东用得不多。对应的SetByteArrayRegion不能实现吗?
 
已经解决了
 
如何解决的?
你应该也是用http://delphi-jedi.org/clxlibrary.html这里的JNI.pas吧?
一两年前用过一下,忘得差不多了。
 
是的,就是用jni.pas解决的.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部