QMacros模板编译结果的缓存与重用

QMacros支持模板编译虽然很快,但毕竟需要消耗一定的时间进行转换,而编译一次,将模板再缓存起来供下次重复使用,省去再次编译的过程,显然是一种加速替换速度的一种不错的选择。

QMacros编译返回的是一个TQMacroComplied对象,它提供了相关的函数来支持此功能:

1、SaveToStream/SaveToFile函数用于保存当前编译结果到数据流或文件中。

一个简单的示例:

procedure TForm6.Button5Click(Sender: TObject);
var
  AComplied: TQMacroComplied;
begin
AComplied := FMacroMgr.Complie(Memo1.Text, Edit1.Text, Edit2.Text,
  ReplaceFlags);
AComplied.SaveToFile('macro_complied.cache');
FreeAndNil(AComplied);
end;

2、LoadFromStream/LoadFromFile函数用于从流或文件中加载末次的缓存结果。

一个简单的例子:

procedure TForm6.Button7Click(Sender: TObject);
var
  AComplied: TQMacroComplied;
begin
AComplied := TQMacroComplied.Create(FMacroMgr);
AComplied.LoadFromFile('macro_complied.cache');
ShowMessage(AComplied.Replace);
FreeAndNil(AComplied);
end;

加载缓存时,请大家注意这个对象需要的宏必需已经定义,否则会抛出异常。上面的示例我并没有进行相关的异常处理,请自行脑补。

分享到: