【更新说明】
默认情况下,QMacros 支持的宏定义是包含在开始和结束字符之间的一串内容,如 [MacroName] 。但有些时候,我们的宏可能只有开始符而没有结束符,而是靠标志符的规则来控制宏名称的结束。如下面带参数的 SQL 语句:
select * from mytable where id>:id and age<:age
其规则就是以 : 开始,遇到第一个非有效的标志符截止(上面的空白)。我们从上面解析出来两个参数: id 和 age。
QMacros 现在已经支持这种宏的解析,只需要在编译或替换时的标志位上设置 MRF_END_WITH_INVALID_CHAR 标志位即可。如上面的脚本,我们使用下面的代码进行宏替换:
AMacros.Push('id',100); AMacros.Push('age',50); S:=AMacros.Replace('select * from mytable where id>:id and age<:age',':',#0,MRF_END_WITH_INVALID_CHAR);
S 的内容将为:
select * from mytable where id>100 and age<50
另外,程序还修改了对于 0 长度宏的支持,改为抛出异常。
【更新级别】
可选