Browse Source

* Fixed AnsiXXX string handling routines.

git-svn-id: trunk@10659 -
yury 17 years ago
parent
commit
18e663240a
2 changed files with 7 additions and 5 deletions
  1. 1 1
      rtl/wince/system.pp
  2. 6 4
      rtl/wince/sysutils.pp

+ 1 - 1
rtl/wince/system.pp

@@ -374,7 +374,7 @@ begin
     end
     end
     else begin
     else begin
       GetMem(Result, SizeOf(WideChar));
       GetMem(Result, SizeOf(WideChar));
-      Inc(len);
+      Inc(len, 2);
       Result^:=#0;
       Result^:=#0;
     end;
     end;
     break;
     break;

+ 6 - 4
rtl/wince/sysutils.pp

@@ -74,13 +74,13 @@ begin
   begin
   begin
     while True do begin
     while True do begin
       if strlen <> -1 then
       if strlen <> -1 then
-        len:=(strlen + 1) div SizeOf(WideChar)
+        len:=strlen + 1
       else
       else
         len:=WideToAnsiBuf(str, -1, nil, 0);
         len:=WideToAnsiBuf(str, -1, nil, 0);
       if len > 0 then
       if len > 0 then
       begin
       begin
         SetLength(Result, len - 1);
         SetLength(Result, len - 1);
-        if (WideToAnsiBuf(str, -1, @Result[1], len) = 0) and (strlen <> -1) then
+        if (WideToAnsiBuf(str, strlen, @Result[1], len) = 0) and (strlen <> -1) then
         begin
         begin
           strlen:=-1;
           strlen:=-1;
           continue;
           continue;
@@ -883,7 +883,7 @@ var
 begin
 begin
   ws1:=PCharToPWideChar(S1, MaxLen, @len1);
   ws1:=PCharToPWideChar(S1, MaxLen, @len1);
   ws2:=PCharToPWideChar(S2, MaxLen, @len2);
   ws2:=PCharToPWideChar(S2, MaxLen, @len2);
-  Result:=CompareString(LOCALE_USER_DEFAULT, 0, ws1, len1, ws2, len2) - 2;
+  Result:=CompareString(LOCALE_USER_DEFAULT, 0, ws1, len1 div SizeOf(WideChar), ws2, len2 div SizeOf(WideChar)) - 2;
   FreeMem(ws2);
   FreeMem(ws2);
   FreeMem(ws1);
   FreeMem(ws1);
 end;
 end;
@@ -896,7 +896,7 @@ var
 begin
 begin
   ws1:=PCharToPWideChar(S1, MaxLen, @len1);
   ws1:=PCharToPWideChar(S1, MaxLen, @len1);
   ws2:=PCharToPWideChar(S2, MaxLen, @len2);
   ws2:=PCharToPWideChar(S2, MaxLen, @len2);
-  Result:=CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, ws1, len1, ws2, len2) - 2;
+  Result:=CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, ws1, len1 div SizeOf(WideChar), ws2, len2 div SizeOf(WideChar)) - 2;
   FreeMem(ws2);
   FreeMem(ws2);
   FreeMem(ws1);
   FreeMem(ws1);
 end;
 end;
@@ -908,6 +908,7 @@ var
   len: longint;
   len: longint;
 begin
 begin
   buf:=PCharToPWideChar(Str, -1, @len);
   buf:=PCharToPWideChar(Str, -1, @len);
+  len:=len div SizeOf(WideChar);
   CharLowerBuff(buf, len);
   CharLowerBuff(buf, len);
   Result:=Str;
   Result:=Str;
   WideToAnsiBuf(buf, -1, Result, len + 1);
   WideToAnsiBuf(buf, -1, Result, len + 1);
@@ -921,6 +922,7 @@ var
   len: longint;
   len: longint;
 begin
 begin
   buf:=PCharToPWideChar(Str, -1, @len);
   buf:=PCharToPWideChar(Str, -1, @len);
+  len:=len div SizeOf(WideChar);
   CharUpperBuff(buf, len);
   CharUpperBuff(buf, len);
   Result:=Str;
   Result:=Str;
   WideToAnsiBuf(buf, -1, Result, len + 1);
   WideToAnsiBuf(buf, -1, Result, len + 1);