[fpc-devel]patch for ReadPropValue
Darek Mazur
darekm at emadar.com
Sun Dec 14 22:15:09 CET 2003
Hi
I investigated read property from Lazarus LRS, and I noticed that tColor
property with Identifies don't work and crash program (for example
tForm.COLOR:=clWindow)
I write small patch to avoid this
this is new function in CLASSES.INC
// ********************start patch
function GlobalIdentToInt(const Ident: String; var Int: LongInt):boolean;
var
i : Integer;
begin
with IntConstList.LockList do
try
for i := 0 to Count - 1 do
if TIntConst(Items[I]).IdentToIntFn(Ident, Int) then exit(True);
Result := false;
finally
IntConstList.UnlockList;
end;
end;
// *************stop patch
and changes in READER.INC
in procedure TReader.ReadPropValue(Instance: TPersistent; PropInfo:
Pointer);
from:
case PropType^.Kind of
tkInteger:
if FDriver.NextValue = vaIdent then
begin
Ident := ReadIdent;
// *************start patch
if GlobalIdentToInt(Ident,Value) then
SetOrdProp(Instance, PropInfo, Value)
else
raise EReadError.Create(SInvalidPropertyValue);
// *************stop patch
end else
SetOrdProp(Instance, PropInfo, ReadInteger);
tkBool:
SetOrdProp(Instance, PropInfo, Ord(ReadBoolean));
with this patch Delphi DFM converted to Lazarus LRS works fine
Darek
More information about the fpc-devel
mailing list