2013-09-30 132 views
1

如何获得一个字符串数组的长度等如何获取数组的长度?

str 30 name[];//dynamic array 

我用于获取长度以下,但它示出了误差为“变量是类型的类不”。

int len=name.get_length(); 

回答

2

对不起,没有内建函数返回的字符串数组的大小。既然你完全控制了你放在阵列中的东西,那就不需要!

内置函数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)可能实际上增加的分配大小阵列。

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())); 
}