如何在 Progress 中执行基本的字符串处理
How to perform basic string handling in Progress
我想把整个字母表放在一个字符串中。为此,我需要两个变量,一个包含整个字母表,另一个包含要使用的字母的计数器,如下所示:
DEFINE VARIABLE i AS INTEGER.
DEFINE VARIABLE Alphabet AS CHARACTER FORMAT "x(30)".
我发现的逻辑如下:
/* Main logic */
i = ASC("a").
REPEAT:
APPLY CHR(i) TO Alphabet.
IF CHR(i)="z" THEN LEAVE.
i = i + 1.
END.
由于我有其他编程语言的经验,我会选择另一种方法:
/* Main logic */
i = ASC("a").
REPEAT:
Alphabet = Alphabet + CHR(i). /* This line is different */
IF CHR(i)="z" THEN LEAVE.
i = i + 1.
END.
显然我的提议行不通,但后来我想了解原因,我查看了 an official URL, explaining the APPLY
statement,说明如下:
APPLY statement
Applies an event to a widget or procedure.
Syntax
APPLY event [ TO widget-phrase ]
现在我迷路了:字符串中的字符与事件(我将事件理解为单击按钮或其他事件)之间的关系是什么? (恐怕我完全误解了整个概念)
编辑,经过更多研究:
与此同时,我了解到我可以使整个事情正常进行,如下所示:
/* Main logic */
i = ASC("a").
REPEAT:
Alphabet = Alphabet + CHR(i). /* This line is different */
IF CHR(i)="z" THEN LEAVE.
i = i + 1.
END.
Alphabet:SCREEN-VALUE = Alphabet.
然而,这只向我表明“正常”字符串处理在进行中是可能的,它还没有解释整个 event
-事情。
Variables in Progress实际上有两部分:普通变量部分和显示部分。当您为变量赋值时,它仅被分配给变量部分。如果您只想为显示的部分分配一个值,请将其分配给 yourvariable:screen-value。如果你想将显示值获取到变量值,你可以说
assign yourvariable.
而如果你想显示你说的变量值
display yourvariable.
一些关键字和函数适用于变量的显示性质。您拥有的使用 APPLY 的示例对我不起作用,但我猜其目的是模拟显示变量上的按键 - 因此应用每个字母。似乎是一种奇怪的做法。
你的最后一个代码示例最有意义,但我会按如下方式修改最后一行:
i = ASC("a").
REPEAT:
Alphabet = Alphabet + CHR(i). /* This line is different */
IF CHR(i)="z" THEN LEAVE.
i = i + 1.
END.
display Alphabet.
请注意,如果您不需要在屏幕上显示变量值,则没有理由调用 DISPLAY。
我想把整个字母表放在一个字符串中。为此,我需要两个变量,一个包含整个字母表,另一个包含要使用的字母的计数器,如下所示:
DEFINE VARIABLE i AS INTEGER.
DEFINE VARIABLE Alphabet AS CHARACTER FORMAT "x(30)".
我发现的逻辑如下:
/* Main logic */
i = ASC("a").
REPEAT:
APPLY CHR(i) TO Alphabet.
IF CHR(i)="z" THEN LEAVE.
i = i + 1.
END.
由于我有其他编程语言的经验,我会选择另一种方法:
/* Main logic */
i = ASC("a").
REPEAT:
Alphabet = Alphabet + CHR(i). /* This line is different */
IF CHR(i)="z" THEN LEAVE.
i = i + 1.
END.
显然我的提议行不通,但后来我想了解原因,我查看了 an official URL, explaining the APPLY
statement,说明如下:
APPLY statement
Applies an event to a widget or procedure. Syntax
APPLY event [ TO widget-phrase ]
现在我迷路了:字符串中的字符与事件(我将事件理解为单击按钮或其他事件)之间的关系是什么? (恐怕我完全误解了整个概念)
编辑,经过更多研究:
与此同时,我了解到我可以使整个事情正常进行,如下所示:
/* Main logic */
i = ASC("a").
REPEAT:
Alphabet = Alphabet + CHR(i). /* This line is different */
IF CHR(i)="z" THEN LEAVE.
i = i + 1.
END.
Alphabet:SCREEN-VALUE = Alphabet.
然而,这只向我表明“正常”字符串处理在进行中是可能的,它还没有解释整个 event
-事情。
Variables in Progress实际上有两部分:普通变量部分和显示部分。当您为变量赋值时,它仅被分配给变量部分。如果您只想为显示的部分分配一个值,请将其分配给 yourvariable:screen-value。如果你想将显示值获取到变量值,你可以说
assign yourvariable.
而如果你想显示你说的变量值
display yourvariable.
一些关键字和函数适用于变量的显示性质。您拥有的使用 APPLY 的示例对我不起作用,但我猜其目的是模拟显示变量上的按键 - 因此应用每个字母。似乎是一种奇怪的做法。
你的最后一个代码示例最有意义,但我会按如下方式修改最后一行:
i = ASC("a").
REPEAT:
Alphabet = Alphabet + CHR(i). /* This line is different */
IF CHR(i)="z" THEN LEAVE.
i = i + 1.
END.
display Alphabet.
请注意,如果您不需要在屏幕上显示变量值,则没有理由调用 DISPLAY。