QB64 Phoenix Edition
Why aren't these subroutines working on user defined types? - Printable Version

+- QB64 Phoenix Edition (https://qb64phoenix.com/forum)
+-- Forum: QB64 Rising (https://qb64phoenix.com/forum/forumdisplay.php?fid=1)
+--- Forum: Code and Stuff (https://qb64phoenix.com/forum/forumdisplay.php?fid=3)
+---- Forum: Help Me! (https://qb64phoenix.com/forum/forumdisplay.php?fid=10)
+---- Thread: Why aren't these subroutines working on user defined types? (/showthread.php?tid=2150)



Why aren't these subroutines working on user defined types? - James D Jarvis - 11-10-2023

I'm surely missing something somewhere but why aren't the subroutines working on the values in this user defined type?  
Shouldn't incr be increasing the values as it does for the variable A?

Code: (Select All)
Type score_type
    max As Integer
    cur As Integer
End Type

Type player_type
    power As score_type
    speed As score_type
    x As Integer
    y As Integer
End Type

Dim player As player_type

player.power.max = 100
player.power.cur = 0
player.x = 100
player.y = 100

A = 10
incr A, 1
Print A   

incr player.power.cur, 1
Print player.power.cur

incr player.x, 1
Print player.x

Sub incr (n, v)
    n = n + v
End Sub

Sub decr (n, v)
    n = n - v
End Sub



RE: Why aren't these subroutines working on user defined types? - OldMoses - 11-10-2023

I'm calling that a mystery. I can't see any obvious issues with the code. I've used lots of type in type constructions that worked fine. My vector math routines shouldn't work if there was a problem with type nesting.

EDIT:

I tried 'n AS INTEGER' in the SUB declaration and it worked.


RE: Why aren't these subroutines working on user defined types? - SMcNeill - 11-10-2023

Type's don't match.   Those SUBs pass SINGLE, not INTEGER types.


RE: Why aren't these subroutines working on user defined types? - James D Jarvis - 11-10-2023

(11-10-2023, 02:04 AM)OldMoses Wrote: I'm calling that a mystery. I can't see any obvious issues with the code. I've used lots of type in type constructions that worked fine. My vector math routines shouldn't work if there was a problem with type nesting.

EDIT:

I tried 'n AS INTEGER' in the SUB declaration and it worked.

Doh, sloppy typing gets me again. Thaks for spotting it.


RE: Why aren't these subroutines working on user defined types? - eoredson - 11-12-2023

This the obvious sample of code for what you are doing:

Code: (Select All)
Type score_type
  max As Integer
  cur As Integer
End Type

Type player_type
  power As score_type
  speed As score_type
  x As Integer
  y As Integer
End Type

Dim player As player_type

player.power.max = 100
player.power.cur = 0
player.x = 100
player.y = 100

A = 10
incr A, 1
Print A

incr player.power.cur, 1
Print player.power.cur

incr player.x, 1
Print player.x
End

Sub incr (n As Integer, v)
  n = n + v
End Sub

Sub decr (n As Integer, v)
  n = n - v
End Sub

Sub multiply (n As Integer, v)
  n = n * v
End Sub

Sub divide (n As Integer, v)
  n = n / v
End Sub

Sub power (n As Integer, v)
  n = n ^ v
End Sub