【更新内容】
1、 编译时的标志位新增 MRF_DELAY_BINDING ,当该标志位设计,如果编译时对应的名称的宏未找到,不会抛出异常。用户只需要在第一次调用Replace前为相应的宏赋值入栈当前值即可。
2、TQMacroComplied 新增函数 EnumUsedMacros 函数来枚举模板中使用的类型不是 mvImmutable 宏的名称。mvImmutable 类型的宏在编译时就已经转换为普通的字符串了,不需要再次解析。
【示例】
var AComplied: TQMacroComplied; AList:TStringList; I,sp: Integer; begin AComplied := FMacroMgr.Complie('%姓名%:%年龄%', '%', '%',MRF_DELAY_BINDING); if AComplied<>nil then begin AList:=TStringList.Create; Memo2.Lines.Add('当前内容中包括'+IntToStr(AComplied.EnumUsedMacros(AList))+'个宏定义:'); Memo2.Lines.AddStrings(AList); sp:=FMacroMgr.SavePoint; for I := 0 to AList.Count-1 do begin FMacroMgr.Push(AList[I],'延迟绑定值'+IntToStr(I)); end; Memo2.Lines.Add(AComplied.Replace); FMacroMgr.Restore(sp); FreeObject(AList); FreeObject(AComplied); end; end;
【更新级别】
可选
【特别感谢】
阿木