Browse Source

* correctly handle AsString if Nil had been passed to Make

git-svn-id: trunk@36983 -
svenbarth 8 years ago
parent
commit
a03b9d0fc4
1 changed files with 10 additions and 10 deletions
  1. 10 10
      packages/rtl-objpas/src/inc/rtti.pp

+ 10 - 10
packages/rtl-objpas/src/inc/rtti.pp

@@ -712,18 +712,18 @@ begin
 end;
 
 function TValue.AsString: string;
-var
-  s: string;
 begin
-  case Kind of
-    tkSString:
-      s := PShortString(FData.FValueData.GetReferenceToRawData)^;
-    tkAString:
-      s := PAnsiString(FData.FValueData.GetReferenceToRawData)^;
+  if (Kind in [tkSString, tkAString, tkUString, tkWString]) and not Assigned(FData.FValueData) then
+    Result := ''
   else
-    raise EInvalidCast.Create(SErrInvalidTypecast);
-  end;
-  result := s;
+    case Kind of
+      tkSString:
+        Result := PShortString(FData.FValueData.GetReferenceToRawData)^;
+      tkAString:
+        Result := PAnsiString(FData.FValueData.GetReferenceToRawData)^;
+    else
+      raise EInvalidCast.Create(SErrInvalidTypecast);
+    end;
 end;
 
 function TValue.AsExtended: Extended;