Казалось бы простой код (в полном соответствии со справкой):
Код: Выделить всё
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
     Здесь видимо всё транслируется в простое копирование области памяти, занимаемое массивом.Alex_G писал(а): 27 Сентябрь 2023, 17:16 При иденчином описании массивов (тип, размер) все работает.
Сложно сказать, но не всегда отрабатывает. После того, как наткнулся на то, что не присваивает, теперь всегда поэлементное присвоение.Игорь Столяров писал(а): 27 Сентябрь 2023, 18:08 Поэтому я тоже не вижу причин, почему простое присвоение одинаковых массивов не должно работать.