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

git-svn-id: trunk@37495 -
This commit is contained in:
michael 2017-10-20 18:44:35 +00:00
parent 80226e3af4
commit 3d3bbcfa9c

View File

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