12-21-2022, 03:59 PM
(This post was last modified: 12-21-2022, 04:28 PM by mnrvovrfc.
Edit Reason: I'm going to edit this post one more time I guess
)
Could code a subprogram that takes two arguments: a string which is the list of values to initialize, and a dynamic array (which will be changed) to take the individual values from the list. Decide what will be the delimeter of the list. For mine I chose semicolon. Must also decide which type, even if it's integer. Sadly, for general purpose must choose "_INTEGER64".
The advantage of this is that the programmer doesn't have to worry about the array's size. The trade-off is that it's difficult this way to work with static arrays. It's clunky sometimes working with strings and having to parse them, but there's no other way to support an user's subprogram which accepts a number of parameters unknown to the compiler, something like the fabled "printf()" function in C runtime library.
Wait a moment -- @bobalooie why do you want to initialize an array with subscript zero as the first element? :O
I was hoping SMcNeill would come over to show off one of his functions... but here is my attempt.
The advantage of this is that the programmer doesn't have to worry about the array's size. The trade-off is that it's difficult this way to work with static arrays. It's clunky sometimes working with strings and having to parse them, but there's no other way to support an user's subprogram which accepts a number of parameters unknown to the compiler, something like the fabled "printf()" function in C runtime library.
Wait a moment -- @bobalooie why do you want to initialize an array with subscript zero as the first element? :O
I was hoping SMcNeill would come over to show off one of his functions... but here is my attempt.
Code: (Select All)
redim l(1 to 1) as integer
dim i as integer
fillinteger "1;2;5;8;4000", l()
for i = 1 to ubound(l)
print i, l(i)
next
end
sub fillinteger (slist as string, li() as integer)
static as long u, v, k
if slist = "" then exit sub
u = 1
v = instr(slist, ";")
k = 0
do while v > 0
k = k + 1
redim _preserve li(1 to k) as integer
li(k) = val(mid$(slist, u, v - u))
u = v + 1
v = instr(u + 1, slist, ";")
loop
k = k + 1
redim _preserve li(1 to k) as integer
li(k) = val(mid$(slist, u))
end sub