如果可能的话,如何显示未知的变量及其值列表



如前所述;Progress-4GL";以及";OpenEdge";标签,我正在使用AppBuilder和Procedure编辑器。因此,调试的可能性非常有限:为了知道变量的值,我需要在屏幕上显示它们,比如

MESSAGE "temp1=[" temp1 "], temp2=[" temp2 "]" VIEW-AS ALERT-BOX.

我也可以把这些信息放在日志文件中,但这不是重点。

我想写一个程序,它可以处理这个问题,比如:

PROCEDURE SHOW_VARIABLES_AND_VALUES (INPUT I1, INPUT I2, ...):
1. <put parameter names and values together inside one string> => """I1="" I1"
2. <do this for all input parameters (the number is unknown)> => """I1="" I1, ""I2="" I2, ..."
3. <how to use this (MESSAGE VIEW-AS ALERT-BOX, LOG, ...) there I'll know what to do>

有人知道如何处理前两点(将变量名称和值放在一起,并处理未知数量的输入参数(吗?

提前感谢

您可以使用SUBSTITUTE函数。

MESSAGE SUBSTITUTE ("temp1=&1 ~ntemp2=&2 ~n temp3=&3",
temp1,
temp2,
temp3) VIEW-AS ALERT-BOX. 

不幸的是,没有对变量或参数的动态访问。因此,无法自动将所有输入参数添加到消息字符串中。ABL中也没有任何类型的参数类型——用于用户定义的函数或过程。因此,您必须大量使用STRING((函数来将输入参数转换为字符串,作为最适合所有参数的参数。

另一方面,内置的SUBSTITUTE函数可以处理任何类型的参数。因此,temp1、temp2和temp3实际上可以是任何数据类型的变量或参数。

正如我在对您之前的一个问题的评论中所提到的:给OpenEdge调试器一个机会。Progress Developer工作室之外的调试器看起来具有历史意义。但它完成了它的工作。

同时我决定使用以下系统(因为我的请求似乎不可能(:

MESSAGE "temp1=[" temp1 "]~n" ~
"temp2=[" temp2 "]~n" ~
"temp3=[" temp3 "]~n" ~
"temp4=[" temp4 "]" ~
VIEW-AS ALERT-BOX.

为了使它易于使用,我发现了以下键盘"快捷方式";波浪号字符:ALT+0126

正如Stefan所指出的,这要好得多(不需要波浪号,也不需要快捷方式(:

MESSAGE "temp1=[" temp1 "]" SKIP
"temp2=[" temp2 "]" SKIP
"temp3=[" temp3 "]" SKIP
"temp4=[" temp4 "]" SKIP
VIEW-AS ALERT-BOX.

最新更新