Browse Source

* first fixes for persisten unicodestrings

git-svn-id: branches/unicodestring@11735 -
florian 17 years ago
parent
commit
101a663f93
2 changed files with 35 additions and 24 deletions
  1. 1 1
      rtl/objpas/classes/classesh.inc
  2. 34 23
      rtl/objpas/classes/reader.inc

+ 1 - 1
rtl/objpas/classes/classesh.inc

@@ -900,7 +900,7 @@ type
   TValueType = (vaNull, vaList, vaInt8, vaInt16, vaInt32, vaExtended,
     vaString, vaIdent, vaFalse, vaTrue, vaBinary, vaSet, vaLString,
     vaNil, vaCollection, vaSingle, vaCurrency, vaDate, vaWString, vaInt64,
-    vaUTF8String,vaUString);
+    vaUTF8String, vaUString);
 
   TFilerFlag = (ffInherited, ffChildPos, ffInline);
   TFilerFlags = set of TFilerFlag;

+ 34 - 23
rtl/objpas/classes/reader.inc

@@ -428,6 +428,11 @@ begin
         Count:=LongInt(ReadDWord);
         SkipBytes(Count*sizeof(widechar));
       end;
+    vaUString:
+      begin
+        Count:=LongInt(ReadDWord);
+        SkipBytes(Count*sizeof(widechar));
+      end;
     vaSet:
       SkipSetBody;
     vaCollection:
@@ -1251,7 +1256,7 @@ begin
     end;
     tkUstring:
       SetUnicodeStrProp(Instance,PropInfo,ReadUnicodeString);
-    tkWstring:
+    tkWString:
       SetWideStrProp(Instance,PropInfo,ReadWideString);
     {!!!: tkVariant}
     tkClass:
@@ -1399,6 +1404,8 @@ begin
     end
   else if StringType in [vaWString] then
     Result:= FDriver.ReadWidestring
+  else if StringType in [vaUString] then
+    Result:= FDriver.ReadUnicodeString
   else
     raise EReadError.Create(SInvalidPropertyValue);
 end;
@@ -1410,42 +1417,46 @@ var
  i: Integer;
 begin
   if NextValue in [vaWString,vaUString,vaUTF8String] then
-               //vaUTF8String needs conversion? 2008-09-06 mse
-  begin
-    ReadValue;
-    Result := FDriver.ReadWideString
-  end
-  else begin
-    //data probable from ObjectTextToBinary
-    s := ReadString;
-    setlength(result,length(s));
-    for i:= 1 to length(s) do begin
-     result[i]:= widechar(ord(s[i])); //no code conversion
+    //vaUTF8String needs conversion? 2008-09-06 mse
+    begin
+      ReadValue;
+      Result := FDriver.ReadWideString
+    end
+  else
+    begin
+      //data probable from ObjectTextToBinary
+      s := ReadString;
+      setlength(result,length(s));
+      for i:= 1 to length(s) do begin
+        result[i]:= widechar(ord(s[i])); //no code conversion
     end;
   end;
 end;
 
+
 function TReader.ReadUnicodeString: UnicodeString;
 var
  s: String;
  i: Integer;
 begin
   if NextValue in [vaWString,vaUString,vaUTF8String] then 
-                //vaUTF8String needs conversion? 2008-09-06 mse
-  begin
-    ReadValue;
-    Result := FDriver.ReadUnicodeString
-  end
-  else begin
-    //data probable from ObjectTextToBinary
-    s := ReadString;
-    setlength(result,length(s));
-    for i:= 1 to length(s) do begin
-     result[i]:= UnicodeChar(ord(s[i])); //no code conversion
+    //vaUTF8String needs conversion? 2008-09-06 mse
+    begin
+      ReadValue;
+      Result := FDriver.ReadUnicodeString
+    end
+  else
+    begin
+      //data probable from ObjectTextToBinary
+      s := ReadString;
+      setlength(result,length(s));
+      for i:= 1 to length(s) do begin
+        result[i]:= UnicodeChar(ord(s[i])); //no code conversion
     end;
   end;
 end;
 
+
 function TReader.ReadValue: TValueType;
 begin
   Result := FDriver.ReadValue;