我通常在我们的商店使用 BASICTYPE 'P',但有机会在项目中使用 'U',并注意到我无法在由属性标记分隔的动态数组上进行定位。
参考文档,它明确指出在 U 类型中,不指定属性表达式是语法错误。这对我来说似乎是一个巨大的疏忽。
如果不使用 for 循环来搜索这些项目,如何做到这一点?
如果您的数组由属性标记分隔,您只需使用以下语法进行定位:
LOCATE expression IN array_name SETTING position_var THEN | ELSE ...
在值标记分隔的数组中定位有点棘手,这将是:
LOCATE expression IN array_name<1> SETTING position_var THEN | ELSE ...
在 BASICTYPE 'U' 中,您可以改用 FIND 语句。
从手册:
句法
FIND expr IN dyn.array[,occur] SETTING f [,v[,s]] {THEN statements | ELSE statements}
说明
UniBasic FIND 命令确定给定表达式在动态数组中的位置。FIND 返回找到的字符串的属性、值和子值位置。表达式必须匹配整个数组元素才能生成 matc
LOCATE 语句有两种形式
一个采取 Locate xxx in yyy setting zzz 然后 aaa else bbb 的形式,另一个 Locate(xxx;yyy;zzz) 然后 aaa else bbb