82
discussion below relating to sub-byte types and alignment). It is important to note that recursive structure
definitions, with members that are or contain (directly or indirectly) the structure being defined, are not
allowed.
Examples
Structure MyDate
Public year as UnsignedInteger
Public month as Byte
Public day as Byte
End Structure
Structure MyTime
Public hour as Byte
Public minute as Byte
Public seconds as Single
End Structure
Structure MyTimeStamp
Public tdate as MyDate
Public ttime as MyTime
Private isCurrent as Boolean
End Structure
Sub Main()
Dim ts as MyTimeStamp
Call GetTimeStamp(ts.tdate.year, ts.tdate.month, ts.tdate.day, _
ts.ttime.hour, ts.ttime.minute, ts.ttime.seconds)
End Sub
The example above illustrates how members of an instance of a structure are referenced. The variable
ts is an instance of the MyTimeStamp structure. A member is referenced by appending the member
name to the variable name, separating them with a period. For members that are structures, members of
the subordinate structure are referred to similarly. No spaces are allowed in this construction. In cases
where a variable or a member is an array, the index list directly follows the variable/member name,
preceding the period.
Structure foo
Dim b as Byte
Dim ai(1 to 10) as Integer
Dim ts(1 to 4) as MyTimeStamp
End Structure
Dim yr as UnsignedInteger
Dim i as Integer
Dim f as foo
Dim b as Byte
i = f.ai(b)
yr = f.ts(3).tdate.year
The address of a member of a variable that is a structure may be obtained by appending the
.DataAddress property identifier to the reference or by using the MemAddress() function.
Dim addr as UnsignedInteger
addr = ts.tdate.DataAddress
addr = MemAddressU(ts.tdate)