Получаю "undefined", хотя в справке "не 0" я ожидаю какое нибудь число.

Код:
EnableExplicit

Structure nxy
	n.i
	x.i
	y.i
EndStructure

Global cw = 2
Global ch = 2
Global x, y

Global Dim nxy.nxy(cw, ch)
Global Dim nxyOld.nxy(cw, ch)

For x = 1 To cw
	For y = 1 To ch
    nxyOld(x, y)\x = 2
    nxyOld(x, y)\y = 2
    nxyOld(x, y)\n = 2
	Next
Next

; For x = 1 To cw
; 	For y = 1 To ch
;     nxy(x, y)\x = 1
;     nxy(x, y)\y = 1
;     nxy(x, y)\n = 1
; 	Next
; Next

Debug CopyArray(nxyOld() , nxy()) ; undefined

For x = 1 To cw
	For y = 1 To ch
    Debug nxy(x, y)\x
    Debug nxy(x, y)\y
    Debug nxy(x, y)\n
	Next
Next

И что самое интересное, если я в одном массиве изменю значение на 0, оно почему то становится 0 в обоих массивах, вот демонстрация ошибки:

Код:
EnableExplicit

Structure nxy
	n.i
	x.i
	y.i
EndStructure

Global cw = 2
Global ch = 2
Global x, y

Global Dim nxy.nxy(cw, ch)
Global Dim nxyOld.nxy(cw, ch)

For x = 1 To cw
	For y = 1 To ch
    nxyOld(x, y)\x = 1
    nxyOld(x, y)\y = 1
    nxyOld(x, y)\n = 1
	Next
Next

For x = 1 To cw
	For y = 1 To ch
    nxy(x, y)\x = 1
    nxy(x, y)\y = 1
    nxy(x, y)\n = 1
	Next
Next

Debug CopyArray(nxyOld() , nxy()) ; undefined

nxy(1, 1)\n = 0


For x = 1 To cw
	For y = 1 To ch
    If nxy(x, y)\n = 0
    	Debug Str(nxy(x, y)\n) + "=" + Str(nxyOld(x, y)\n)
    EndIf	
	Next
Next

Кстати, долго не думая просто сделал индивидуальную функцию не проверяя размерности.

Код:
Procedure CopyArray1(Array a.nxy(2), Array b.nxy(2))
	Protected x, y
; 	Size1 = ArraySize(a(), 1)
; 	Size2 = ArraySize(a(), 2)
	For x = 1 To cw
    For y = 1 To ch
    	b(x,y)\x = a(x,y)\x
    	b(x,y)\y = a(x,y)\y
    	b(x,y)\n = a(x,y)\n
    Next
	Next
EndProcedure

Отредактировано AZJIO (20.10.2023 14:46:33)