【问题标题】:Automic UC4 script: Storing user-input into an arrayAutomic UC4 脚本:将用户输入存储到数组中
【发布时间】:2023-03-30 13:55:01
【问题描述】:

首先:我使用的是 UC4 - 对话版本 9.00A Build 234-162。

我正在尝试读取可变数量的输入字段(通过 :READ)并希望将它们的值存储到一个数组中:

:DEFINE &FILE#, string, 10
:PUBLISH &FILE#[], , "WORKFLOW"

:BEGINREAD "Files"
:  READ &CNT#, , "Number of files", "3"
:ENDREAD

:SET &IDX# = 1
:BEGINREAD "Files"
:  WHILE &IDX# LE &CNT#
:    SET &IDX# = ADD(&IDX#, 1)
:    READ &FILE#[&IDX#], ,"???"
:  ENDWHILE
:ENDREAD

问题是:现在我收到错误消息 U0020310,告诉我 :READ 的第一个参数必须是变量。

问题:我错过了什么?是否不可能将 :READ 与数组一起使用?如果是这样:我该如何解决这个问题?

【问题讨论】:

    标签: arrays user-input uc4 automic


    【解决方案1】:

    &CNT# 必须是变量对象(VARA 对象)。因此,您会将所有内容读入静态 VARA 对象。

    这可以通过 PREP_PROCESS 命令循环执行。

    【讨论】:

    • 我不确定这个 VARA 对象将如何帮助我创建一个具有动态输入行数的公式。这就是 BEGINREAD 块中的 WHILE 循环的用途。所以……你愿意给我举个例子吗?正如我所看到的,UC4 不喜欢它不知道每个 READ 命令在 BEGINREAD 块开头的确切存储位置的事实?因为 :READ &FILE#[1], , "???"就像一个魅力 - 但这不是我想要的......
    • 请准确描述您想要实现的目标,可能有更简单的方法。
    • 是的,你是对的,任何方式的“动态”——比如要处理的动态文件和动态迭代次数在运行时都不起作用。
    • 你需要做的是在此之前有一份工作,它提供文件并且要处理的文件的名称可以存储在一个可变静态对象中以将它们交给你'你已经拥有的工作。这样您的 begin-read 就可以使用 vara 对象中的文件名
    猜你喜欢
    • 1970-01-01
    • 2018-01-20
    • 2018-03-22
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多