【更新内容】
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;【更新级别】
可选
【特别感谢】
阿木
