2.2.6 即时面板

即时(Immediate)面板可用于在调试过程中检查某点处的可用数据。该面板可对变量、参数或语句进行评估,仅在调试时可见,如图2-76所示。

图2-76 Immediate面板

使用时,只需在Immediate面板中输入变量、参数名称或表达式,然后按回车键即可在面板中查看结果。

Immediate面板使用时有以下几个小技巧:

□选中Immediate面板中的单个行并按回车键,可以删除该行的内容;

□当在某行内单击并开始输入时,系统会自动将文本添加到输入字段;

□可以使用上下文菜单中的Clear All按钮来清除面板中的所有行。

【例2.5】创建根据年龄判断用户是否成年的流程并结合该流程更深入地理解各调试面板的使用场景。我们会创建一个项目,它会弹出窗口请用户输入年龄,然后弹出对话框提示用户是否已经成年。当用户输入的年龄小于18岁时,提示用户“您未成年”;当用户输入的年龄大于等于18岁时,则提示用户“您已成年”。流程图如图2-77所示。

图2-77 流程图

具体实现步骤如下所示。

1)在Studio界面中,点击Process创建名为2_5_Debug Panel的新流程,如图2-78所示。

图2-78 新建流程

2)拖入一个Sequence活动到设计器面板。在Properties面板中,将Sequence活动的DisplayName属性更改为“判断是否成年”,如图2-79所示。

图2-79 拖入Sequence活动并更改属性

3)在Variables面板中创建Int32类型的变量UserAge,用于存储用户输入的年龄,如图2-80所示。

图2-80 创建变量

4)拖入一个Input Dialog活动到“判断是否成年”Sequence中。在Properties面板中,将DisplayName属性更改为“输入年龄”,将Label属性更改为“"请输入您的年龄:"”,将Title属性更改为“"输入年龄"”,在Result属性中输入变量UserAge,如图2-81所示。

图2-81 拖入Input Dialog活动并更改属性

5)在Activities面板的搜索框内输入if,如图2-82所示。

图2-82 搜索If活动

6)将If活动拖入“判断是否成年”Sequence中,位于“输入年龄”活动的下方。在Properties面板中,将DisplayName属性更改为“判断年龄是否小于18岁”,在Condition条件中输入UserAge<18,如图2-83所示。

图2-83 拖入If活动并更改属性

7)在Activities面板的搜索框内输入write line,如图2-84所示。

图2-84 搜索Write Line活动

8)将Write Line活动拖入“判断年龄是否小于18岁”活动的Then分支中。在Properties面板中,将DisplayName属性更改为“用户年龄小于18岁时”,将Text属性更改为"您未成年。",如图2-85所示。

图2-85 用户年龄小于18岁时的分支设置

9)再拖入一个Write Line活动至“判断年龄是否小于18岁”活动的Else分支中。在Properties面板中,将DisplayName属性更改为“用户年龄大于等于18岁时”,将Text属性更改为"您已成年。",如图2-86所示。

图2-86 用户年龄大于等于18岁时的分支设置

10)此时项目已经创建完成,接下来进行调试部分。选中“判断年龄是否小于18岁”活动,在DEBUG选项卡中点击Breakpoints按钮,为该活动设置断点,如图2-87所示。

11)选中“用户年龄大于等于18岁时”活动,在DEBUG选项卡中点击Breakpoints按钮,再设置一个断点,如图2-88所示。

图2-87 在If活动处设置断点

图2-88 在用户年龄大于等于18岁时的输出活动处设置断点

12)在DEBUG选项卡中,点击Debug按钮开始调试,如图2-89所示。

13)程序开始执行,系统将显示“输入年龄”对话框,输入自己的年龄后点击OK按钮,如图2-90所示。

图2-89 点击Debug按钮开始调试

图2-90 “输入年龄”对话框

14)由于我们设置了断点,此时程序会在“判断年龄是否小于18岁”活动暂停,该活动会被高亮显示,如图2-91所示。

图2-91 程序在断点处暂停

15)可以在Locals面板中看到当前状态下的一些信息,例如变量UserAge的值为17,如图2-92所示。

16)将鼠标悬停在变量和参数上,点击“编辑”按钮打开Local Value窗口,更改变量值为19后,点击OK按钮,如图2-93所示。

图2-92 Locals面板显示当前状态的一些信息

图2-93 在Local Value窗口更改变量值

17)此时变量UserAge的值已经被更改为19,右击变量选择Add to Watch选项将该变量值添加到Watch面板,如图2-94所示。

图2-94 将变量添加到Watch面板

18)切换到Watch面板,可以看到变量UserAge已经被添加到此面板,方便我们在程序执行中对该变量值进行监控,如图2-95所示。

图2-95 在Watch面板监控变量值

19)切换到Immediate面板,在窗口中输入UserAge,然后按下回车键,可以查看当前状态UserAge的结果,如图2-96所示。

图2-96 在Immediate面板查询变量值

20)切换到Call Stack面板,可以看到要执行的下一个活动及其父容器,如图2-97所示。

图2-97 在Call Stack面板查看要执行的下一个活动及其父容器

21)切换到Breakpoints面板,可以看到当前项目中设置的所有断点并进行管理,如图2-98所示。

图2-98 在Breakpoints面板查看断点

22)在Breakpoints面板,选中“用户年龄大于等于18岁时”活动右击,在弹出菜单中选择Disable选项,如图2-99所示。

23)此时“用户年龄大于等于18岁”活动的断点失效,在Breakpoints面板和设计器面板中该活动的实心圆将变为空心圆,如图2-100所示。

图2-99 在Breakpoints面板设置指定断点无效

图2-100 断点无效后的调试界面

24)按F5键继续执行流程,由于我们已经将变量UserAge的值修改为19,将执行Else分支,而“用户年龄大于等于18岁”活动的断点已失效,因此程序将不会暂停。在Output面板直接显示执行结果,如图2-101所示。

图2-101 执行结果