X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fshared%2Fxdynrec.pas;h=12d7256429d473c5f46061d7a7fe4084d2251f97;hb=96165a1a95f0ea18a20dd8578fade4b46ec23746;hp=ac55cf5d0360202e28589c97e5525e71253dc3e2;hpb=b0369ee9442a79c9ace3454e7e1709cd61ed6a8e;p=d2df-sdl.git diff --git a/src/shared/xdynrec.pas b/src/shared/xdynrec.pas index ac55cf5..12d7256 100644 --- a/src/shared/xdynrec.pas +++ b/src/shared/xdynrec.pas @@ -249,6 +249,7 @@ type procedure setUserField (const fldname: AnsiString; v: LongInt); procedure setUserField (const fldname: AnsiString; v: AnsiString); + procedure setUserField (const fldname: AnsiString; v: Boolean); public property id: AnsiString read mId; // for map parser @@ -1985,6 +1986,31 @@ begin end; +procedure TDynRecord.setUserField (const fldname: AnsiString; v: Boolean); +var + fld: TDynField; +begin + if (Length(fldname) = 0) then exit; + fld := field[fldname]; + if (fld <> nil) then + begin + if (fld.mType <> fld.TType.TBool) or (fld.mEBS <> fld.TEBS.TNone) then + begin + raise Exception.Create(Format('invalid user field ''%s'' type', [fld.name])); + end; + end + else + begin + fld := TDynField.Create(fldname, fld.TType.TBool); + fld.mOwner := self; + fld.mIVal := Integer(v); + fld.mInternal := true; + fld.mDefined := true; + addField(fld); + end; +end; + + procedure TDynRecord.parseDef (pr: TTextParser); var fld: TDynField;