我试图将字符串数组值从Java本机接口传递给Delphi包装类。但是没有从JNI那里得到任何数组值。如何在Delphi包装类中声明数组字符串。如何转换JNI字符串数组。
这是我的Delphi包装类代码:
function Java_com_erm_controller_ARMReports_A3(PEnv: PJNIEnv; Obj: JObject;
ex_BSName_ALM: JStrings): Integer; stdcall; export;
var
objRpt: TARMReports;
begin
Result := objRpt.A3(aBSName_ALM);
JVM.Free;
objRpt.Free;
end;发布于 2014-02-10 20:52:55
不知道JStrings实际上声明为什么(在Delphi的JNI包装器单元中没有定义),我只能猜测您需要这样做:
function Java_com_erm_controller_ARMReports_A3(PEnv: PJNIEnv; Obj: JObject;
ex_BSName_ALM: JStrings): Integer; stdcall; export;
var
strs: array of String;
len, i: Integer;
el: JNIObject;
...
begin
...
len := PEnv.GetArrayLength(PEnv, ex_BSName_ALM);
SetLength(strs, len);
for i := 0 to len-1 do
begin
el := PEnv.GetObjectArrayElement(PEnv, ex_BSName_ALM, i);
strs[i] := JStringToString(JString(el));
end;
...
end;https://stackoverflow.com/questions/21677240
复制相似问题