Qbasicnews.com
Arrays in Types - Printable Version

+- Qbasicnews.com (http://qbasicnews.com/newforum)
+-- Forum: Qbasic "like" compilers/interpreters (http://qbasicnews.com/newforum/forum-5.html)
+--- Forum: FB Discussion & Programming Help (http://qbasicnews.com/newforum/forum-15.html)
+---- Forum: FB Projects (http://qbasicnews.com/newforum/forum-16.html)
+---- Thread: Arrays in Types (/thread-8653.html)



Arrays in Types - Torahteen - 12-28-2005

Is this not possible? I've had a few small projects that tried and failed at this. What's goin' on?


Arrays in Types - SSC - 12-28-2005

I recently posted an example in freebasic.net

here is what I am guessing you want to do
Code:
Type mytype
variable(30) as integer
. . .
End Type
which you cannot do, however you can do it like this:
Code:
Type mytype
variable as integer
. . .
End Type

Dim array(1 to 30) as mytype
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


Arrays in Types - TheBlueKeyboard - 12-28-2005

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



Arrays in Types - Anonymous - 12-28-2005

yes, dynamic arrays are what everyone wants

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


Arrays in Types - Kylemc - 12-28-2005

Quote:which you cannot do,

Um..you can? TBK's example works for me on 0.15.


Arrays in Types - Torahteen - 12-28-2005

Ok, in my program, I have a type that has an array inside it.

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.


Arrays in Types - speedlemon - 12-28-2005

It appears to work for me. :wink:


Arrays in Types - yetifoot - 12-28-2005

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



Arrays in Types - SSC - 12-29-2005

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...