Difference between revisions of "Talk:Add - Array"

392 bytes added ,  18:44, 26 September 2016
m
no edit summary
imported>LAITH10
m
imported>LAITH10
m
 
(2 intermediate revisions by 2 users not shown)
Line 4: Line 4:
But when trying to add a new element on this property, it simply does nothing (array is still empty). Using the same script with no modifications, but filling the array with a "dummy" element via CK suddenly works just fine.
But when trying to add a new element on this property, it simply does nothing (array is still empty). Using the same script with no modifications, but filling the array with a "dummy" element via CK suddenly works just fine.
I haven't tested it on non-property arrays thought.
I haven't tested it on non-property arrays thought.
: This function does work for non-property arrays. I've used the method myself. My only problem with that is, add expands the array, which isn't always what one wants to happen, you'd need a way to clamp it if is used in a while loop.--[[User:Twilight Sky|Twilight Sky]] ([[User talk:Twilight Sky|talk]]) 2016-09-25T08:12:34 (EDT)


After some further testing I found the issue: If you have a property array, you have to make sure that it is either assigned a value via CK, or initialise it somewhere in the code (preferably in OnInit()). If you do not initialise the array via CK with at least one element, the array will be none and thus no functions such as Add() will work.
After some further testing I found the issue: If you have a property array, you have to make sure that it is either assigned a value via CK, or initialise it somewhere in the code (preferably in OnInit()). If you do not initialise the array via CK with at least one element, the array will be none and thus no functions such as Add() will work.
Line 18: Line 17:
Likewise, the same issue appears with non-property arrays if you did not initialize it before.
Likewise, the same issue appears with non-property arrays if you did not initialize it before.
I would recommend to put this information somewhere on the array articles, as this can lead to some serious problems. It got me a good headache just to find that issue. [[User:Shirakami|Shirakami]] ([[User talk:Shirakami|talk]]) 2016-09-25T09:20:53 (EDT)
I would recommend to put this information somewhere on the array articles, as this can lead to some serious problems. It got me a good headache just to find that issue. [[User:Shirakami|Shirakami]] ([[User talk:Shirakami|talk]]) 2016-09-25T09:20:53 (EDT)
All you need to do is create a new array with a zero size. The zero size lets the array expand its length when used with the Array.Add and Array.Remove functions. There is no need to check if an array is none before setting its value.
<source lang="papyrus">
event OnInit()
    MyArray= New MyArrayType[0]
    MyArray.Add(someValue)
endevent
</source>
--[[User:Scrivener07|Scrivener07]] ([[User talk:Scrivener07|talk]]) 2016-09-26T18:41:39 (EDT)
That way it will overwrite any elements that had been set via creation kit. If you do a check first, it will not overwrite the changes made in CK, but only initializes it if it is empty.[[User:Shirakami|Shirakami]] ([[User talk:Shirakami|talk]]) 2016-09-26T18:44:14 (EDT)
Anonymous user