1

如何获取字符串数组的长度,例如

str 30 name[];//dynamic array

我使用以下方法获取长度,但它显示错误为“变量不是 CLASS 类型”。

int len=name.get_length();
4

3 回答 3

4

听起来您可能会更高兴使用Array 集合类

http://msdn.microsoft.com/en-us/library/array.aspx

static void TestArray(Args _args)
{
    Array   strArray = new Array(Types::String);
    ;

    strArray.value(1, 'abc');
    strArray.value(2, 'def');

    info(strfmt("%1", strArray.lastIndex()));
}
于 2013-09-30T21:48:52.557 回答
1

你需要这个dimOf功能。看看参考资料:

http://msdn.microsoft.com/en-us/library/aa597117.aspx

于 2013-09-30T07:48:00.647 回答
1

抱歉,没有返回字符串数组大小的内置函数。由于您可以完全控制放入数组中的内容,因此不需要任何内容​​!

内置函数dimof返回分配的数组大小,仅对固定大小的数组有实际价值,如str 30 name[20],其中dimof(name)返回 20。

保持控制的一种干净方法是使用 setter 函数:

static void TestArray(Args _args)
{
    str 30 name[];
    int n = 0;
    int i;
    void nameSet(int _i, str 30 _name)
    {
        n = max(n,_i);
        name[_i] = _name;
    }
    ;
    nameSet(2,'abc');
    nameSet(4,'def');
    for (i = 1; i <= n; i++)
        info(name[i]);
}

没有上限索引限制,因此访问name[7]是完全有效的,在这种情况下返回一个空白值。如果您始终使用所有孔并且从不存储空白,这可能对您有利:

static void TestArray(Args _args)
{
    str 30 name[];
    int i;
    name[1] = 'abc';
    name[2] = 'def';
    for (i = 1; name[i]; i++)
        info(name[i]);
}

请注意,访问更高的索引(在这种情况下高于 2)实际上可能会增加数组的分配大小。

于 2013-09-30T10:25:35.887 回答