Преглед на файлове

* Raise error if property cannot be written (Enhanced patch from Ondrej Pokorny, bug ID #32586)

git-svn-id: trunk@37495 -
michael преди 7 години
родител
ревизия
3d3bbcfa9c
променени са 1 файла, в които са добавени 27 реда и са изтрити 0 реда
  1. 27 0
      rtl/objpas/typinfo.pp

+ 27 - 0
rtl/objpas/typinfo.pp

@@ -1509,6 +1509,9 @@ begin
   end;
 end;
 
+Resourcestring
+  SErrCannotWriteToProperty = 'Cannot write to property %s.';
+
 Procedure SetOrdProp(Instance : TObject;PropInfo : PPropInfo;Value : Int64);
 type
   TSetInt64ProcIndex=procedure(index:longint;i:Int64) of object;
@@ -1578,6 +1581,8 @@ begin
               TSetIntegerProc(AMethod)(Value);
           end;
       end;
+  else
+    raise EPropertyError.CreateFmt(SErrCannotWriteToProperty, [PropInfo^.Name]);
   end;
 end;
 
@@ -1820,6 +1825,8 @@ begin
               else
                 TSetIntfStrProc(AMethod)(Value);
             end;
+        else
+          raise EPropertyError.CreateFmt(SErrCannotWriteToProperty, [PropInfo^.Name]);
         end;
       end;
     tkInterfaceRaw:
@@ -1880,6 +1887,8 @@ begin
               else
                 TSetPointerProc(AMethod)(Value);
             end;
+          else
+            raise EPropertyError.CreateFmt(SErrCannotWriteToProperty, [PropInfo^.Name]);
         end;
       end;
     tkInterface:
@@ -1961,6 +1970,8 @@ begin
         else
           TSetDynArrayProc(AMethod)(TDynArray(Value));
       end;
+  else
+    raise EPropertyError.CreateFmt(SErrCannotWriteToProperty, [PropInfo^.Name]);
   end;
 end;
 
@@ -2059,6 +2070,8 @@ begin
               else
                 TSetShortStrProc(AMethod)(Value);
             end;
+        else
+          raise EPropertyError.CreateFmt(SErrCannotWriteToProperty, [PropInfo^.Name]);
         end;
       end;
     tkAString:
@@ -2079,8 +2092,12 @@ begin
               else
                 TSetAnsiStrProc(AMethod)(Value);
             end;
+          else
+            raise EPropertyError.CreateFmt(SErrCannotWriteToProperty, [PropInfo^.Name]);
         end;
       end;
+  else
+    raise EPropertyError.CreateFmt(SErrCannotWriteToProperty, [PropInfo^.Name]);
   end;
 end;
 
@@ -2176,6 +2193,8 @@ begin
               else
                 TSetWideStrProc(AMethod)(Value);
             end;
+        else
+          raise EPropertyError.CreateFmt(SErrCannotWriteToProperty, [PropInfo^.Name]);
         end;
       end;
   end;
@@ -2260,6 +2279,8 @@ begin
               else
                 TSetUnicodeStrProc(AMethod)(Value);
             end;
+        else
+          raise EPropertyError.CreateFmt(SErrCannotWriteToProperty, [PropInfo^.Name]);
         end;
       end;
   end;
@@ -2342,6 +2363,8 @@ begin
               else
                 TSetRawByteStrProc(AMethod)(Value);
             end;
+        else
+          raise EPropertyError.CreateFmt(SErrCannotWriteToProperty, [PropInfo^.Name]);
         end;
       end;
   end;
@@ -2487,6 +2510,8 @@ begin
               TSetCurrencyProcIndex(AMethod)(PropInfo^.Index,Value);
         end;
       end;
+  else
+    raise EPropertyError.CreateFmt(SErrCannotWriteToProperty, [PropInfo^.Name]);
   end;
 end;
 
@@ -2566,6 +2591,8 @@ begin
         else
           TSetMethodProc(AMethod)(Value);
       end;
+  else
+    raise EPropertyError.CreateFmt(SErrCannotWriteToProperty, [PropInfo^.Name]);
   end;
 end;