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

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

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

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

[QMacros] 使用宏替换在百度地图上加标注

这段代码是我实际使用的一段代码,贴出来分享给大家。

这段代码的功能是在百度地图上,添加一个 marker 标记出指定的位置。当然这段代码你没法直接执行,因为缺少完整的定义,不过可以看出来如何在代码中通过 QMacros 将代码与脚本的模板进行分离。在调用

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

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

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

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

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

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

注意:使用参数化宏替换时,必需指定 MRF_PARSE_PARAM

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

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

[QMacros] 使用模板生成随机电话号码

这是一个使用 QMacros 的 Volatile 类型的宏来实现的小例子,首先我们看代码:

上面的代码将 186[n][n][n][n]5678 中的 [n] 每次替换为一个随机的 0-9 之间的数字,然后形成  186xxxx5678 这样的号码,我

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

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

其规则就是以

[QMacros] 利用模板生成数据库插入语句

QMacros 做为一个模板替换库,拥有良好的属性。结合合适的策略,可以很好的完成复杂的功能。 我们下面的这个例子,试图基于 QMacros 模板生成一个SQL批量插入脚本,首先我们来看下模板定义:

这个是我们生成一个简单 SQL 的模板定义,模板中宏以

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]-基本使用方法说明

1、创建一个TQMacroManager对象,它用来管理所有的宏。后面所有的操作都必需基于它。 [Delphi]

[C++]

2、将基本的宏入栈,注意确定宏的类型。具体请参考主题中的【QM

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

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

QMacros宏的值稳定性选项详解

QMacros宏的稳定性,系统给了一个枚举类型TQMacroVolatile来表示,它定义的正确与否,会影响整体替换操作的效率。我们先看其定义:

这三种不同的选择,影响替换时,QMacros如何优化操作过程: 1、不变的(mvImmutable) 此时,