12-28-2005, 10:22 AM
12-28-2005, 10:32 AM
I recently posted an example in freebasic.net
here is what I am guessing you want to do
which you cannot do, however you can do it like this:
which will give you an array containing all of the variables in the type declaration as in array(1).variable or array(2).variable and so on
here is what I am guessing you want to do
Code:
Type mytype
variable(30) as integer
. . .
End Type
Code:
Type mytype
variable as integer
. . .
End Type
Dim array(1 to 30) as mytype
12-28-2005, 05:39 PM
Im not sure what you mean but it does work making an array inside a type.
Code:
Type mytype_t
variable(30) As Integer
End Type
Dim myinst As mytype_t
myinst.variable(5) = 1337
Print myinst.variable(5)
Sleep
Anonymous
12-28-2005, 08:55 PM
yes, dynamic arrays are what everyone wants
you use pointers like so
always clean up when you make a mess
you use pointers like so
Code:
Type business
owners As Integer
owner_name As String Ptr
End Type
Declare Function alloc_owner_name( num As Integer = 0, s As String Ptr = 0 )
Dim As business b( 1 )
'' init
b( 0 ).owners = 1
b( 1 ).owners = 3
'' set up
With b( 0 )
.owner_name = alloc_owner_name( .owners )
End With
With b( 1 )
.owner_name = alloc_owner_name( .owners )
End With
'' 1 owner
b(0).owner_name[0] = "Bill Gates"
'' 3 owner
b(1).owner_name[0] = "Completely"
b(1).owner_name[1] = "Random"
b(1).owner_name[2] = "People"
For c = 0 To 1
? "business " & c + 1
?
With b( c )
For ct = 0 To .owners - 1
? "owner #" & ct + 1
? .owner_name[ct]
.owner_name[ct] = "" ''clean!!
Next
?
End With
Next
Sleep
b( 0 ).owner_name = alloc_owner_name( 0 ) ''give it nothing!
b( 1 ).owner_name = alloc_owner_name
Function alloc_owner_name( num As Integer = 0, s As String Ptr = 0 )
Deallocate s
Return CAllocate( Len( String ) * num )
End Function
always clean up when you make a mess
12-28-2005, 09:57 PM
Quote:which you cannot do,
Um..you can? TBK's example works for me on 0.15.
12-28-2005, 10:00 PM
Ok, in my program, I have a type that has an array inside it.
Then I have an array of SomeTypes.
But it doesn't appear to work.
Code:
Type SomeType
array(1 To 12) As Byte
End Type
Then I have an array of SomeTypes.
Code:
Dim Shared SomeArray(1 To 10) As SomeType
But it doesn't appear to work.
12-28-2005, 10:10 PM
It appears to work for me. :wink:
12-28-2005, 10:10 PM
This works fine for me in 0.15
Code:
Type SomeType
array(1 To 12) As Byte
End Type
Dim Shared SomeArray(1 To 10) As SomeType
SomeArray(1).Array(1) = 50
SomeArray(10).Array(11) = 100
Print SomeArray(1).Array(1)
Print SomeArray(10).Array(11)
Sleep
12-29-2005, 02:42 AM
hmmm, well I know you couldn't do it in QB, but I am too lazy to bust out my laptop to test it right now so I guess i'll take your word for it...