[QMacros]示例:使用 QMacros 玩转 HTML 模板

我们在实际开发中,由于各种各样的原因,可能会结合浏览器来实现一些 Delphi 本身不好实现的效果。而如果网页是靠拼字符串来完成,显然其效率不是太理想。而如果结合 QMacros ,你会发现一切都变的那么简单。QMacros 的示例中包含了一个新的 HTML 模板示例代码,我们来解读其中与 QMacros 相关的部分,

[QMacros]更新:新增 MRF_ENABLE_ESCAPE 和 MRF_IGNORE_MISSED 标志位

【更新说明】 新增了两个标志位来更好的支持模板功能: MRF_ENABLE_ESCAPE 启用模板中的转义字符支持,转义字符以反斜线引起,后跟要转义的字符,如果非特殊转义字符,则为后面的字符。QMacros 支持的特殊转义字符包括,其含义和 QJson 的转义支持一致,但\后跟其它字符时,会返回其它字符,而不会出错:

[QMacros] 教程: 使用 QMacros 从 PHP 脚本中获取使用的变量名称列表

【注】本教程仅出于演示目的,并不代表作者推荐或者反对某种做法,也不代表这些代码有任何其它实际用途。 QMacros 的是一个高效的栈式查找替换引擎,为您提供丰富的功能。下面的代码演示了如何从一段 PHP+HTML 混合代码得到所有的 PHP 定义的变量名(其中源代码放到了Memo1 里,输出的变量名称直接放到了Memo

[QMacros] 更新:增加对用户自定义规则的宏名称解析的支持

QMacros 默认是通过宏的开始字符串和结束字符串来区隔宏名称的。但这并不是所有的时候都能满足我们的需要,比如下面的字符串中,我们用 $ 来开始宏名称,遇到非数字时,宏名称就结束: Replace $1.Name to $2.Name 根据前述规则,$1 和 $2 我们人工就可以解析出两个宏 1 和 2,而由于没有宏

[QMacros] 更新:新增内置的参数化宏定义支持

【更新说明】 新版本的 QMacros 新增宏定义的参数化支持,通过支持参数化,从而让非固定值的宏能够根据参数做出适当的变化,为应用的开发提供更好的支持。 下面是一个参数化宏替换的例子: procedure TForm1.Button1Click(Sender: TObject); var AMgr: TQMacroM

[QMacros] 一个参数化宏替换的示例代码

【注】 QMacros 已经内置了参数化的支持,请大家参考 :[QMacros] 更新:新增内置的参数化宏定义支持 下面的代码是给群里的一位朋友写的 QMacros 的一个简单的示例,通过参数控制宏替换时的值的范围。但这个代码只是一个简单的示例,创建的 PRangeMacro 实例未在最后释放,请大家使用时,自行加上相

QMacros 更新 – 增加对单边宏定义的支持

【更新说明】 默认情况下,QMacros 支持的宏定义是包含在开始和结束字符之间的一串内容,如 [MacroName] 。但有些时候,我们的宏可能只有开始符而没有结束符,而是靠标志符的规则来控制宏名称的结束。如下面带参数的 SQL 语句: select * from mytable where id>:id an

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

【更新内容】 1、 编译时的标志位新增 MRF_DELAY_BINDING ,当该标志位设计,如果编译时对应的名称的宏未找到,不会抛出异常。用户只需要在第一次调用Replace前为相应的宏赋值入栈当前值即可。 2、TQMacroComplied 新增函数 EnumUsedMacros 函数来枚举模板中使用的类型不是 m

QMacros更新-修正了在Andriod下编译失败的问题

【问题描述】 修正了编译目标环境为在Andriod,报InternalComplie函数参数错误。错误原因是由于传递的参数是Self,而Self在Android平台的编译器中被认为是const类型,而参数要求是一个var类型,因此造成编译失败。 【严重级别】 高 【更新级别】 推荐 【特别感谢】 麦子仲肥

QMacros速度简单评测

【测试说明】 本测试只是对QMacros的性能做一个简单的评价,从而给出一定的建议。受限于测试用例的设计无法覆盖各种情况,这些建议未必一定可靠,需要您自己进行一定的进一步测试。 【测试用例】 本次测试主要对比的是系统自带的StringReplace和QDAC中QString提供的StringReplaceW。从理论上来

QMacros中的保存点详解

保存点是QMacros中的一种用于简化你编程的重要途径。当然,其牺牲了一点点效率来提升用性。 首先,QMacros采用了堆栈式的宏管理机制,所以在添加新宏时,如果新宏的名称与旧宏的名称,它就会覆盖旧的宏定义,从而保证当前替换操作能够正确执行。但在退出当前函数时,我们需要将相应的宏定义出栈以便恢复原始值,以保证调用我们的

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

QMacros支持模板编译虽然很快,但毕竟需要消耗一定的时间进行转换,而编译一次,将模板再缓存起来供下次重复使用,省去再次编译的过程,显然是一种加速替换速度的一种不错的选择。 QMacros编译返回的是一个TQMacroComplied对象,它提供了相关的函数来支持此功能: 1、SaveToStream/SaveToF

QMacros该如何处理在内容中出现起始和结束符?

这是一个很现实的问题,比如我们定义了宏的开始符号为 “[” ,宏的结束符为 “]”,那么如果我们要在模板中包含 “[” 和 “]” 该怎么办呢? 答案就是宏转义,我们可以定义宏 MacroStart , MacroEnd 分别对应下面的宏定义,然后入栈如下: AMarcoMgr.Push(‘MacroStart’,'[