Just starting out? Need help? Post your questions and find answers here.
Samuel
Enthusiast
Posts: 755 Joined: Sun Jul 29, 2012 10:33 pm
Location: United States
Post
by Samuel » Mon Jun 02, 2014 8:02 pm
Hello everyone,
I'm sending a structure to a procedure and then trying to send that data to another procedure, but in the second procedure the data is coming up empty.
Anyone have any ideas why?
Code: Select all
EnableExplicit
Structure Vector
X.d
Y.d
Z.d
EndStructure
Define.Vector Origin
Origin\X = 1.0
Origin\Y = 2.0
Origin\Z = 3.0
Define.Vector Vertex
Vertex\X = 0.5
Vertex\Y = 0.25
Vertex\Z = 0.25
Global.Vector Result
Declare LoadData(*Data0.Vector, *Data1.Vector)
Declare Vector(*V0.Vector, *V1.Vector, *V2.Vector)
LoadData(@Origin, @Vertex)
Debug "Result"
Debug Result\X
Debug Result\Y
Debug Result\Z
Procedure LoadData(*Data0.Vector, *Data1.Vector)
Define.Vector Data0
Define.Vector Data1
Debug "Data0"
Debug *Data0\X
Debug *Data0\Y
Debug *Data0\Z
Debug ""
Debug "Data1"
Debug *Data1\X
Debug *Data1\Y
Debug *Data1\Z
Debug ""
Vector(@Result, @Data0, @Data1)
EndProcedure
Procedure Vector(*V0.Vector, *V1.Vector, *V2.Vector)
Debug "V0"
Debug *V0\X
Debug *V0\Y
Debug *V0\Z
Debug ""
Debug "V1"
Debug *V1\X
Debug *V1\Y
Debug *V1\Z
Debug ""
Debug "V2"
Debug *V2\X
Debug *V2\Y
Debug *V2\Z
Debug ""
*V0\X = *V1\X - *V2\X
*V0\Y = *V1\Y - *V2\Y
*V0\Z = *V1\Z - *V2\Z
EndProcedure
Deluxe0321
User
Posts: 69 Joined: Tue Sep 16, 2008 6:11 am
Location: ger
Post
by Deluxe0321 » Mon Jun 02, 2014 8:14 pm
if you want to "send" the data from the "main" code
Data0 & Data1 are empty
since you define them newly in LoadData(*Data0.Vector, *Data1.Vector)
Code: Select all
Define.Vector Data0
Define.Vector Data1
Last edited by
Deluxe0321 on Mon Jun 02, 2014 8:15 pm, edited 1 time in total.
skywalk
Addict
Posts: 4220 Joined: Wed Dec 23, 2009 10:14 pm
Location: Boston, MA
Post
by skywalk » Mon Jun 02, 2014 8:14 pm
Code: Select all
EnableExplicit
Structure Vector
X.d
Y.d
Z.d
EndStructure
Define.Vector Origin
Origin\X = 1.0
Origin\Y = 2.0
Origin\Z = 3.0
Define.Vector Vertex
Vertex\X = 0.5
Vertex\Y = 0.25
Vertex\Z = 0.25
Global.Vector Result
Declare LoadData(*Data0.Vector, *Data1.Vector)
Declare Vector(*V0.Vector, *V1.Vector, *V2.Vector)
LoadData(Origin, Vertex)
Debug "Result"
Debug Result\X
Debug Result\Y
Debug Result\Z
Procedure LoadData(*Data0.Vector, *Data1.Vector)
Debug "Data0"
Debug *Data0\X
Debug *Data0\Y
Debug *Data0\Z
Debug ""
Debug "Data1"
Debug *Data1\X
Debug *Data1\Y
Debug *Data1\Z
Debug ""
Vector(Result, *Data0, *Data1)
EndProcedure
Procedure Vector(*V0.Vector, *V1.Vector, *V2.Vector)
Debug "V0"
Debug *V0\X
Debug *V0\Y
Debug *V0\Z
Debug ""
Debug "V1"
Debug *V1\X
Debug *V1\Y
Debug *V1\Z
Debug ""
Debug "V2"
Debug *V2\X
Debug *V2\Y
Debug *V2\Z
Debug ""
*V0\X = *V1\X - *V2\X
*V0\Y = *V1\Y - *V2\Y
*V0\Z = *V1\Z - *V2\Z
EndProcedure
The nice thing about standards is there are so many to choose from. ~ Andrew Tanenbaum
Tenaja
Addict
Posts: 1959 Joined: Tue Nov 09, 2010 10:15 pm
Post
by Tenaja » Mon Jun 02, 2014 8:23 pm
As the other guys have shown, to send the address of Data0, you add an ampersand: @Data0 . To use that address, your proc parameter must be a pointer to handle it properly: *Data0.Vector . Read the Help file on pointers for a more complete description.
Samuel
Enthusiast
Posts: 755 Joined: Sun Jul 29, 2012 10:33 pm
Location: United States
Post
by Samuel » Mon Jun 02, 2014 8:38 pm
Thanks for the help, guys. This makes a lot more sense.