Page 1 of 1

[Resolved] Structure and list in structure

Posted: Sat Jul 28, 2018 3:05 pm
by Golfy
Hi everybody,

working on Velbus house automation, the object concept would have helped me but Purebasic isn't good at that.
I've module with attributes : class, address, type, NumberPart, and...
I've part with attributes : name, partID, status, etc.

My problem is that a kind of module have only one part whereas some other could have up to 32 parts

I was thinking about 2 structures :
Structure Module and Structure Part... but I don't know how to link the two Structure (without inherit possibilities)

I was thinking to a list in structure but not sure it will work??? and maybe there are better solutions I've not seen ??? please help me "Obiwan you're our only hope" ;)

Re: Structure and list or array in structure

Posted: Sat Jul 28, 2018 3:40 pm
by StarBootics
Golfy wrote:Hi everybody,

working on Velbus house automation, the object concept would have helped me but Purebasic isn't good at that.
I've module with attributes : class, address, type, NumberPart, and...
I've part with attributes : name, partID, status, etc.

My problem is that a kind of module have only one part whereas some other could have up to 32 parts

I was thinking about 2 structures :
Structure Module and Structure Part... but I don't know how to link the two Structure (without inherit possibilities)

I was thinking to a list in structure but not sure it will work??? and maybe there are better solutions I've not seen ??? please help me "Obiwan you're our only hope" ;)

Code: Select all

Structure Part
  
  name
  partID
  status
 
EndStructure

Structure VelbusModule
  
  class
  address
  type
  NumberPart
  List Parts.Part()
  
EndStructure
This will work. if the memory is not a problem :

Code: Select all

Structure Part
  
  name
  partID
  status
 
EndStructure

Structure VelbusModule
  
  class
  address
  type
  NumberPart
  Parts.Part[32]
  
EndStructure
will also work.

Best regards
StarBootics

Re: Structure and list or array in structure

Posted: Sat Jul 28, 2018 4:47 pm
by Golfy
But to be sure, is this code correct then ?

Code: Select all

    ; No module. This message is the first. We've to create it !
    AddElement(VMBModule())
    VMBModule()\modClass = GetClassName(Octet(2))
    VMBModule()\modPartNumber = GetPartNumber(Octet(2))
    For t=0 To VMBModule()\modPartNumber-1
      AddElement(VMBModule()\modPart())
    Next t
Or should I use AddElement(modPart()) directly ?

Re: list in structure containing an structure

Posted: Sat Jul 28, 2018 4:58 pm
by Golfy
I've tried a example in side of my mainprogram. It works perfectly !!!

Here is my example

Code: Select all

Structure GPS
  x.f
  y.f
  a.f
EndStructure

Structure VILLE
  villeName.s
  List coordonnees.GPS()
EndStructure

NewList lesVilles.VILLE()

AddElement(lesvilles())
lesVilles()\villeName="Valence"
AddElement(lesvilles()\coordonnees())
lesVilles()\coordonnees()\x = 128
lesVilles()\coordonnees()\y = 94
lesVilles()\coordonnees()\a = 600
Debug "Altitude of "+lesVilles()\villeName+" is "+StrF(lesVilles()\coordonnees()\a)+" meters"

ClearList(lesVilles()\coordonnees())
AddElement(lesvilles()\coordonnees())
lesVilles()\coordonnees()\x = 44.5559
lesVilles()\coordonnees()\y = 4.5400
lesVilles()\coordonnees()\a = 128
Debug "Altitude of "+lesVilles()\villeName+" is "+StrF(lesVilles()\coordonnees()\a)+" meters"
Thanks a lot! it's near POO enough for me 8)

Re: [Resolved] Structure and list in structure

Posted: Sun Jul 29, 2018 1:45 pm
by blueb
Hi Golphy,
I'm not sure where your GPS data is derived from, but
couldn't FLOATS possibly create problems?

I'd be tempted to use doubles if any accuracy is needed.

I used GPS with 'doubles' as an example.

PS - Valence, France looks like a very lovely area. :)

see: https://www.south-of-france.com/valence ... of-france/

Code: Select all

Structure GPS
  Longditude.d
  Latitude.d
  Altitude.d
EndStructure

Structure VILLE
  villeName.s
  List coordonnees.GPS()
EndStructure

NewList lesVilles.VILLE()

AddElement(lesvilles())
     lesVilles()\villeName="Valence, France"
AddElement(lesvilles()\coordonnees())
     lesVilles()\coordonnees()\Longditude = 128
     lesVilles()\coordonnees()\Latitude = 94
     lesVilles()\coordonnees()\Altitude = 600
     
Debug "Altitude of "+lesVilles()\villeName+" is "+StrD(lesVilles()\coordonnees()\Altitude)+" meters"
Debug "---------------"

ClearList(lesVilles()\coordonnees())

AddElement(lesvilles()\coordonnees())
     lesVilles()\coordonnees()\Longditude = 44.5559    ;44°56′00″N
     lesVilles()\coordonnees()\Latitude = 4.5400       ;4°53′30″E
     lesVilles()\coordonnees()\Altitude = 128          ;avg. 123 meters
     
     Debug "Longitude of "+lesVilles()\villeName+" is "+StrD(lesVilles()\coordonnees()\Longditude)+" degrees"
     Debug "Latitude of "+lesVilles()\villeName+" is "+StrD(lesVilles()\coordonnees()\Latitude)+" degrees"
     Debug "Altitude of "+lesVilles()\villeName+" is "+StrD(lesVilles()\coordonnees()\Altitude)+" meters"

Re: [Resolved] Structure and list in structure

Posted: Mon Jul 30, 2018 8:43 am
by Golfy
blueb wrote:Hi Golphy,
I'm not sure where your GPS data is derived from, but
couldn't FLOATS possibly create problems?

I'd be tempted to use doubles if any accuracy is needed.
Yes, you're right, it was a "virtual" example and I didin't look at real needed type. Thanks for the correction :)