QMacros 更新 – 新增编译选项和枚举模板使用的宏名称函数

【更新内容】

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;

【更新级别】

可选

【特别感谢】

阿木

分享到: