03-04-2026, 09:57 PM
No in the sense that you are trying to implement. There is a workaround that I use. Basically you are storing numbers in a long string. Here is a demo of that. Arrays in UDT's has been on my wish list for years.
You could do something similar with memory blocks but it is a bit more cluncky.
Code: (Select All)
' String Array Test
' Arrays must start at index 1
TYPE tUDT
longArray AS STRING * 1028 ' arraysize * 4 + 4
a AS INTEGER
b AS _BYTE
c AS LONG
longArray1 AS STRING * 1028
END TYPE
DIM udt AS tUDT
DIM iter AS LONG
FOR iter = 1 TO 256
SetArrayLong udt.longArray, iter, iter * 2000000
PRINT iter; ": "; getArrayLong(udt.longArray, iter)
SetArrayLong udt.longArray1, iter, iter * 2000000
PRINT iter; ": "; getArrayLong(udt.longArray1, iter)
NEXT
FUNCTION getArrayLong& (s AS STRING, p AS LONG)
IF p > 0 AND p * 4 + 4 <= LEN(s) THEN getArrayLong = CVL(MID$(s, p * 4, 4))
END FUNCTION
SUB SetArrayLong (s AS STRING, p AS LONG, v AS LONG)
IF p > 0 AND p * 4 + 4 <= LEN(s) THEN MID$(s, p * 4) = MKL$(v)
END SUB
FUNCTION getArraySingle! (s AS STRING, p AS LONG)
IF p > 0 AND p * 4 + 4 <= LEN(s) THEN getArraySingle = CVS(MID$(s, p * 4, 4))
END FUNCTION
SUB SetArraySingle (s AS STRING, p AS LONG, v AS SINGLE)
IF p > 0 AND p * 4 + 4 <= LEN(s) THEN MID$(s, p * 4) = MKS$(v)
END SUB
FUNCTION getArrayInteger% (s AS STRING, p AS LONG)
IF p > 0 AND p * 2 + 2 <= LEN(s) THEN getArrayInteger = CVI(MID$(s, p * 2, 2))
END FUNCTION
SUB SetArrayInteger (s AS STRING, p AS LONG, v AS INTEGER)
IF p > 0 AND p * 2 + 2 <= LEN(s) THEN MID$(s, p * 2) = MKI$(v)
END SUB
FUNCTION getArrayDouble# (s AS STRING, p AS LONG)
IF p > 0 AND p * 8 + 8 <= LEN(s) THEN getArrayDouble = CVL(MID$(s, p * 8, 8))
END FUNCTION
SUB SetArrayDouble (s AS STRING, p AS LONG, v AS DOUBLE)
IF p > 0 AND p * 8 + 8 <= LEN(s) THEN MID$(s, p * 8) = MKD$(v)
END SUB
You could do something similar with memory blocks but it is a bit more cluncky.
2D physics engine https://github.com/mechatronic3000/fzxNGN
QB Pool https://github.com/mechatronic3000/QBPool
QB Pool https://github.com/mechatronic3000/QBPool


