On-line: Andrey, i3t4j6, гостей 0. Всего: 2 [подробнее..]
АвторСообщение



Пост N: 189
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 15.06.16 09:10. Заголовок: Я не знаю, это баг и..


Я не знаю, это баг или фича, первый раз столкнулся.
Если я создаю массив (AR1) с какими-то данными,затем добавляю этот массив в другой AR0,
по Aadd (), и в первом массиве выполняю какие-то действия, то все действия с AR1
автоматически отображаются в AR0. Ниже приведен текст небольшой тестовой программы

Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 7 [только новые]





Пост N: 192
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 15.06.16 11:08. Заголовок: Фича..


Вроде всегда так было.
Ar2:=Aclone(ar1) решает вопрос - размещает новый массив в другой области

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1011
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 15.06.16 11:10. Заголовок: это фича. со времен ..


это фича. со времен клиппер все массивы передаются по ссылке. Чтобы их разделить если критично-передавать надо клон массива используя Aclone (AR1)

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 190
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 15.06.16 16:21. Заголовок: Я понимаю, что масси..


Я понимаю, что массивы передаются по ссылке, но это в функцию. Aclone тоже понятно, если мне нужно просто реплицировать то можно было воспользоваться . В примере я не показал, но в реальной работе мне нужно было в основной массив добавить несколько массивов, получить многомерный массив и отдать в его работу. Чтобы не строить полноценную тестовую систему, я решил взять один масив, и изменяя его элементы, добавить в основной несколько раз и отдать в работу. Ну и получил описанную ситуацию. На мой взгляд не совсем правильно в этом случае, но имеем то что имеем. Спасибо за участие

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1218
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 15.06.16 21:57. Заголовок: Работа с массивами в..


Работа с массивами всегда по ссылке. И так было с древних времен)

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5727
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.06.16 22:03. Заголовок: PSP пишет: И так бы..


PSP пишет:

 цитата:
И так было с древних времен)


С этих ? )))


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1219
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 15.06.16 22:06. Заголовок: )))..


)))

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 193
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 15.06.16 22:14. Заголовок: Что такое .. по ссылке..


Возможно, что и неплохо было обнаружить эту фичу
Проблема в том, что aadd (ar0,ar1) означает , что
"присоединенная часть "ar0 == ar1, то есть ar0_new==ar0_old+ar1
".. по ссылке" означает равенство не значений массивов, а их адресов, то есть места в памяти.
то есть ar0_new вместо своего расширения (в конец массива) - залез на "чужую территорию" - на ar1

aadd(ar0,aclone(ar1)) - как раз расширяет ar0 значениями из ar1, оставляя ar1 несвязанным с ar0 общим размещением.
Сорри, если не стало яснее.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 175
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет