联系我时,请告知来自化工仪器网

400-875-1717转866

当前位置:首页  >  技术文章  >  XRD软件应用技巧 | HighScore 脚本入门(二)

XRD软件应用技巧 | HighScore 脚本入门(二)

更新时间:2025-04-24       点击次数:116


本文摘要

先分享一个好消息,从2024年10月发布的HighScore 5.3版本开始,脚本功能将扩展到无Plus功能的HIghScore软件版本,因此从本篇文章开始本系列更名为《HighScore脚本入门》


在本系列的第一篇文章中介绍了HighScore Plus 软件的脚本支持功能,并展开说明了脚本语言的程序结构和数据类型及常规的赋值和运算语句。本篇我们来说一说脚本程序代码中的流程控制。


流程控制

条件语句


程序执行中,有时候需要判断某个条件是否满足,根据判断结果实施不同的操作,这就需要条件语句来实现。Pascal语言中条件语句主要有if语句和case语句。


if 语句的最基础格式如下:

if 判断条件 then 满足条件的处理语句;

XRD软件应用技巧 | HighScore 脚本入门(二)

图1. if...then 语句


if...then 语句后面可以跟一个可选的 else 语句,格式如下,注意,此时 then 后的语句不能加分号,因为 if 语句还没结束。


if 判断条件 then 满足条件的处理语句 else 不满足条件的处理语句;


XRD软件应用技巧 | HighScore 脚本入门(二)


图2.  if…then…else语句


then else 后面的处理语句中可以再嵌套 if语句,特别是 else 后面,可以形成 if…then…else if…then…else if…then…else的多支路语句。但一定要小心使用嵌套!有可能程序运行结果不是你所预期的那样。


XRD软件应用技巧 | HighScore 脚本入门(二)

图3. if…then…else if…then…else if…then……else多支路语句


当支路越来越多时,用嵌套的 if 语句就显得太繁琐。如果多支路的选择是由同一个变量或表达式的不同结果值所决定的,其实也可以用 case 语句来实现,而且更显简洁、清晰。如图3的例子,用 case 语句可以改写成:


XRD软件应用技巧 | HighScore 脚本入门(二)

图4.  case多支路语句


流程控制

循环语句


程序执行中,需要多次规律性的重复处理时,特别是一些数组的运算处理时,就需要用到循环语句。Pascal 语言中循环语句主要有while…do 语句、repeat…until 语句和 for…do 语句。


while…do 语句的基础格式如下:

while 判断条件 do 循环体语句;


每轮循环之前,都先进行条件判断,当判断条件满足时,则执行循环体;当判断条件不满足,则结束循环。循环体可以是单个语句,也可以是由 beginend;包含起来的程序块,但其语句中一定要包含有能改变判断条件控制变量的语句,能使判断条件不满足,以免形成死循环。

XRD软件应用技巧 | HighScore 脚本入门(二)

图5.  while…do循环语句


while…do 语句相反,repeat…until 语句是先执行循环体,然后再看判断条件是否满足,如果满足则结束循环,所以循环体至少会被执行一次。循环体可以是单个语句,也可以由多个语句组成,但不一定用 beginend;包含起来,repeat until 本身具备包含程序块的功能。其基础格式如下:


repeat 循环体语句 until 判断条件;


XRD软件应用技巧 | HighScore 脚本入门(二)

图6.  repeat…until循环语句


while…do 语句和 repeat…until 语句中循环次数不定,根据某一条件来决定是否继续循环,如果要进行固定次数的循环,可以用 for…do 语句:


for 计次变量:=初始值 to 终止值 do 循环体;

for 计次变量:=初始值 downto 终止值 do 循环体;


其中,计次变量一般为整数类型(也可以是字符类型);第一轮循环时,计次变量被赋予初始值,此后每轮循环计次变量都会递增(to 关键字)或递减(downto 关键字)1;如果计次变量没超过终止值,则执行循环体,否则结束循环。


循环体内还可以用 continuebreak 这两个关键字对循环做额外的控制,上述的三种循环语句内都可使用,一般配合条件语句决定什么情况下要 continue breakcontinue 起效时,在该轮次循环内,循环体里在其后的语句将不再执行,而是立即进行下一轮次循环是否进行的条件判断;break 则直接就此结束循环;它们的影响范围只在它们所处的那一层级的循环语句。

XRD软件应用技巧 | HighScore 脚本入门(二)

图7. for…do循环语句


for…do 语句还有一种特殊形式的for…in…do 循环,本文不再赘述,感兴趣的可以移步Free Pascal wiki了解。


较为复杂的运算,可能会用到循环语句的嵌套,Pascal语言中允许任何类型的循环语句嵌套于任何类型的循环语句内。

XRD软件应用技巧 | HighScore 脚本入门(二)

图8.  循环语句嵌套