I have a strange problem, I pass data from the android String via JNI. pass data from FreePascal wideString successfully using the following code
NewString: function (Env: PJNIEnv; const Unicode: PJChar; Len: JSize):
JString; cdecl;
GetStringChars:function(Env:PJNIEnv;Str:JString;IsCopy:PJBoolean):PJChar;
cdecl;
function JNI_WideStringToJString(Env: PJNIEnv; const WStr: WideString):
JString;
begin
Result := Env^.NewString(Env, Pointer(WStr), Length(WStr));
end;but when passing data JString to widestring, using this code :
function JNI_JStringToWideString(Env: PJNIEnv; JStr: JString): WideString;
var
IsCopy: JBoolean;
Chars: PJChar;
begin
if (JStr = nil) then begin
Result := '';
Exit;
end;
Chars := Env^.GetStringChars(Env, JStr, IsCopy);
if (Chars = nil) then begin
Result := ''
end else begin
Result := WideString(Chars);
Env^.ReleaseStringChars(Env, JStr, Chars);
end;
end;return only 1 character leading.
if anyone has ever experienced ? or there's something wrong with JNI header ?
thanks
-----
-
