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