0

我通常在我们的商店使用 BASICTYPE 'P',但有机会在项目中使用 'U',并注意到我无法在由属性标记分隔的动态数组上进行定位。

参考文档,它明确指出在 U 类型中,不指定属性表达式是语法错误。这对我来说似乎是一个巨大的疏忽。

如果不使用 for 循环来搜索这些项目,如何做到这一点?

4

3 回答 3

2

如果您的数组由属性标记分隔,您只需使用以下语法进行定位:

LOCATE expression IN array_name SETTING position_var THEN | ELSE ...

在值标记分隔的数组中定位有点棘手,这将是:

LOCATE expression IN array_name<1> SETTING position_var THEN | ELSE ...
于 2013-08-07T02:01:34.697 回答
0

在 BASICTYPE 'U' 中,您可以改用 FIND 语句。

从手册:

句法
FIND expr IN dyn.array[,occur] SETTING f [,v[,s]] {THEN statements | ELSE statements}

说明
UniBasic FIND 命令确定给定表达式在动态数组中的位置。FIND 返回找到的字符串的属性、值和子值位置。表达式必须匹配整个数组元素才能生成 matc

于 2013-05-29T12:37:18.490 回答
0

LOCATE 语句有两种形式

一个采取 Locate xxx in yyy setting zzz 然后 aaa else bbb 的形式,另一个 Locate(xxx;yyy;zzz) 然后 aaa else bbb

于 2011-02-11T19:40:13.497 回答