2
0
Эх сурвалжийг харах

Try to implement UnicodeFromLocaleChars for java

Pierre Muller 1 жил өмнө
parent
commit
5a7d5367d2

+ 3 - 0
rtl/inc/ustrings.inc

@@ -1047,6 +1047,8 @@ function StringToWideChar(const Src : RawByteString;Dest : PWideChar;DestSize :
   end;
   end;
 {$endif FPC_HAS_STRING_LEN_TO_WIDECHAR}
 {$endif FPC_HAS_STRING_LEN_TO_WIDECHAR}
 
 
+{$ifndef FPC_HAS_UNICODEFROMLOCALECHARS}
+{$define FPC_HAS_UNICODEFROMLOCALECHARS}
 function UnicodeFromLocaleChars(CodePage, Flags: Cardinal; LocaleStr: PAnsiChar;
 function UnicodeFromLocaleChars(CodePage, Flags: Cardinal; LocaleStr: PAnsiChar;
   LocaleStrLen: Integer; UnicodeStr: PWideChar; UnicodeStrLen: Integer): Integer; overload;
   LocaleStrLen: Integer; UnicodeStr: PWideChar; UnicodeStrLen: Integer): Integer; overload;
 
 
@@ -1067,6 +1069,7 @@ begin
   // Return length  
   // Return length  
   result:=len;
   result:=len;
 end;
 end;
+{$endif ndef FPC_HAS_UNICODEFROMLOCALECHARS}
 
 
 function UnicodeFromLocaleChars(const LocaleName: AnsiString; Flags: Cardinal;
 function UnicodeFromLocaleChars(const LocaleName: AnsiString; Flags: Cardinal;
   LocaleStr: PAnsiChar; LocaleStrLen: Integer; UnicodeStr: PWideChar;
   LocaleStr: PAnsiChar; LocaleStrLen: Integer; UnicodeStr: PWideChar;

+ 22 - 0
rtl/java/justrings.inc

@@ -624,6 +624,28 @@ function StringToWideChar(const Src : RawByteString;Dest : PWideChar;DestSize :
     result:=Dest;
     result:=Dest;
   end;
   end;
 
 
+{$define FPC_HAS_UNICODEFROMLOCALECHARS}
+function UnicodeFromLocaleChars(CodePage, Flags: Cardinal; LocaleStr: PAnsiChar;
+  LocaleStrLen: Integer; UnicodeStr: PWideChar; UnicodeStrLen: Integer): Integer; overload;
+
+var
+  temp: widestring;
+  Len: SizeInt;
+begin
+  widestringmanager.Ansi2WideMoveProc(LocaleStr,CodePage,temp,LocaleStrLen);
+  Len:=Length(temp);
+  // Only move when we have room.
+  if (UnicodeStrLen>0) then
+    begin
+    if UnicodeStrLen<=Len then
+      Len:=UnicodeStrLen-1;
+    JLString(temp).getChars(0,Len,TJCharArray(UnicodeStr),0);
+    UniCodeStr[Len]:=#0;
+    end;
+  // Return length
+  result:=len;
+end;
+
 
 
 {$define FPC_HAS_UNICODECHAR_LEN_TO_STRING}
 {$define FPC_HAS_UNICODECHAR_LEN_TO_STRING}
 function UnicodeCharLenToString(S : PUnicodeChar;Len : SizeInt) : UnicodeString;
 function UnicodeCharLenToString(S : PUnicodeChar;Len : SizeInt) : UnicodeString;