Казалось бы простой код (в полном соответствии со справкой):
Код: Выделить всё
A Byte,Dim(3)
B Byte,Dim(3)
Code
A[1] = 1
A[2] = 2
A[3] = 3
B :=: A
Message(B[2]) ! <- Ошибок нет, но неожиданно = 0
Модератор: Дед Пахом
Код: Выделить всё
A Byte,Dim(3)
B Byte,Dim(3)
Code
A[1] = 1
A[2] = 2
A[3] = 3
B :=: A
Message(B[2]) ! <- Ошибок нет, но неожиданно = 0
Упс. Спасибо. А что там можно было с массивами ?
Нет, нельзя. Оператор :=: работает для групп. Массив или же очередь группой не являются. Они являются набором групп.
На самом деле не совсем так. В качестве переменной, которой присваивается значение могут быть и группа, и очередь, и запись и даже массив. (destination The label of a GROUP, RECORD, or QUEUE data structure, or an array).Губин Игорь писал(а): ↑27 Сентябрь 2023, 9:38Нет, нельзя. Оператор :=: работает для групп. Массив или же очередь группой не являются. Они являются набором групп.
Код: Выделить всё
AQueue Queue,Pre(a)
Strока String(3)
Massiv Long,Dim(2)
END
BQueue Queue,Pre(b)
Strока String(3)
Massiv Long,Dim(2)
END
...
LOOP i#=1 to Records(AQueue)
GET(AQueue,i#)
BQueue :=: AQueue ! Is equivalent to:
! b:Stroka = a:stroka
! b:Massiv[1] = a:Massiv[1]
! b:Massiv[2] = a:Massiv[2]
Add(BQueue)
END
Код: Выделить всё
ArrayField SHORT,DIM(10)
...
ArrayField :=: 7 ! Is equivalent to:
! LOOP I# = 1 to 10
! ArrayField[I#] = 7
! END
Код: Выделить всё
b:Massiv = a:Massiv
Здесь видимо всё транслируется в простое копирование области памяти, занимаемое массивом.
Сложно сказать, но не всегда отрабатывает. После того, как наткнулся на то, что не присваивает, теперь всегда поэлементное присвоение.Игорь Столяров писал(а): ↑27 Сентябрь 2023, 18:08 Поэтому я тоже не вижу причин, почему простое присвоение одинаковых массивов не должно работать.