массив структур, копирование значений
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
e.kha Участник со стажем
Вступление в Клуб: 26.04.2012
|
Чт Окт 11, 2012 07:01  массив структур, копирование значений |
|
Полезность: Нет оценки
|
есть массив типа структура (record).
есть два массива этого типа, только
массив а объявлен и заполняется в процедуре,
а массив b глобальный.
если я сделаю
такое присвоение в процедуре где объявлен массив а
Код: | b(b.count + 1) := b(i); |
то при выходе из процедуры, массив b , будет пустой, видимо потому что
данная операция присваивает ссылку на ячейку из a.
Как можно быстро сделать копирование рекорда из одного массива в другой? Рекорд большой и копирование по полям долго описывать.... |
|
 |
e.kha Участник со стажем
Вступление в Клуб: 26.04.2012
|
Чт Окт 11, 2012 07:02   |
|
Полезность: Нет оценки
|
извините ошибся
Код: | b(b.count + 1) := a(i); |
|
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Окт 11, 2012 08:18  Re: массив структур, копирование значений |
|
Полезность: Нет оценки
|
e.kha пишет: |
Как можно быстро сделать копирование рекорда из одного массива в другой? Рекорд большой и копирование по полям долго описывать.... |
что нибудь типа
Код: |
for i in 1 .. a.count
loop
b(i):=a(i);
end loop;
|
|
|
 |
e.kha Участник со стажем
Вступление в Клуб: 26.04.2012
|
Чт Окт 11, 2012 09:01   |
|
Полезность: Нет оценки
|
массив b объявлен вне процедуры и передается параметром процедуре
массив а объявлен в процедуре
после присваивания
значений массива а массиву b
Код: | b(b.count + 1) := a(i); |
массив b в процедуре имеет значения
но как только процедура выполнена
он пустой |
|
 |
e.kha Участник со стажем
Вступление в Клуб: 26.04.2012
|
Чт Окт 11, 2012 09:05   |
|
Полезность: Нет оценки
|
прошу прощения, извините, я проперся....
кривые руки голове покоя не дают |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Пт Окт 12, 2012 13:51   |
|
Полезность: Нет оценки
|
e.kha пишет: | массив b объявлен вне процедуры и передается параметром процедуре |
А зачем? Он же глобальный?
e.kha пишет: |
массив а объявлен в процедуре
после присваивания
значений массива а массиву b
Код: | b(b.count + 1) := a(i); |
массив b в процедуре имеет значения
но как только процедура выполнена
он пустой |
если уж передаёшь массив с тем же именем, что и глобальный массив, сделай параметр p_b in out nocopy тип_массива
И, кстати, обязательно делать присваивание каждой записи?
Может, весь массив сразу присвоить? И функцию писать не надо...
Вот она - проблема неправильного названия.
L_ - префикс глобальных переменных, в локальных описаниях.
G_ - префикс глобальных переменных, в локальных описаниях.
P_ - префикс параметров функций/процедур.
V$ - префикс пременных внутри функций/процедур. (символ доллара нужен для того, чтобы не путать с параметрами операции, описанными на вкладке "Параметры") |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|