是请注意,块不能嵌套在当前的执行工作. " ~ "字符可以用一个变量的名字作为占位符后更换为实际计数. 择" numbering "声明界定在哪里开始计数( 0 by default )
numbering 1
{ tab byte "len"
string len "String No. ~"
} [10]
在这个例子实际变量的名字放在模板将"String No. 1", "String No. 2", ..., "String No. 10". 而不是一个固定的重复数目 ( 10在这个例子中) ,您可能还注明是"无限" . 在这种情况下winhex将重复块到年底档案遭遇. " exitloop "可以用来走出这条回路在任何时间
" ifequal "是有用的比较两个表达式. operands可分为两个数值,是恒定值十进制,整型变量或公式, 或者字节序列作文字或hex值是比较byte字节. ascii字符串表达式必须加上引号, hex序列必须prreced了" 0x "标识. 公式须括弧.
{ r byte Value
IfEqual Value 1
ExitLoop
EndIf
} [10]
" ifequal " 以结束" endif "的声明. 如果比较表达都是相等的,模板的解释后继续" ifequal " . optionally , " ifequal "可以遵循的不等的声明. 模板处理器支进入" else "区块,如果表达不能划等号. " ifequal "命令不能嵌套. " ifgreater "类似于" ifequal " . 条件是正确的,如果第一表达的是大于二. 字符串按词典顺序进行比较.
为了便于阅读和导航模板 你可确定一组的变量,在对话框中会在不同组的变量用空间分开:
section "...Section Title..."
...variable declaractions...
endsection
"section", "endsection", 和 "numbering"关键字都没有与当前位置的解释有
关。
有两个命令也不做变量声明,但被明确用来改变目前的位置. 可以跳过无关紧要的数据(向前移动)或能取得一定的变量不止一次 由于不同类型(反向运动) . 用" move n "声明中跳过n字节,由目前的位置,其中N可说是消极的. " goto n " 到指定绝对位置,从一开始的模板解释(必须是位置) . :
int32 "Disk serial number (decimal)"
move -4
hex 4 "Disk serial number (hex)"
|