Получаю "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)