我试图将String数组值从Java本机接口传递给Delphi包装器类。 但没有从JNI获得任何数组值。如何在Delphi Wrapper类中声明Array String。 如何转换JNI String数组。
这是我的Delphi包装类Code:
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;
答案 0 :(得分:0)
在不知道实际声明为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;