Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как соединить два динамических массива?


anton20vlad ©   (2009-04-09 13:12:00) 

Есть массив A и есть массив B:


var
 A: Pointer;
 B: Pointer;


Размер элементов массива в памяти заранее неизвестен. Как получить массив С состоящий из всех элементов массива А, а затем из всех элементов массива В?


oxffff   (2009-04-10 03:09:00) [1]


> anton20vlad   (09.04.09 13:12)  


Сделать можно через создание аналога _DynArrayCopyRange.

см. system.


Amoeba   (2009-04-10 02:12:00) [2]

Будем ждать возвращения автора.


Германн   (2009-04-10 02:10:00) [3]


> Вообще-то у автора Pointer.

Автор просто задал "дурной" вопрос.
Если бы он описал задачу, было б проще.


Плохиш   (2009-04-10 01:56:00) [4]


> test ©   (09.04.09 14:29) [8]
>
> var
>  a,b,c:array of integer;

Вообще-то у автора Pointer. Не надо приводить задания к тем, которые описаны в любой книжке для "полных чайников".


test   (2009-04-09 16:37:00) [5]

Юрий Зотов ©   (09.04.09 15:40) [12]
Я в расчете на то что будудт использовать типы String, Pointer, Object мало ли что автору нужно.


Anatoly Podgoretsky   (2009-04-09 16:05:00) [6]


> test ©   (09.04.09 15:35) [11]

Уже вижу, все в порядке.


Юрий Зотов   (2009-04-09 15:40:00) [7]

> test ©   (09.04.09 14:29) [8]

Для массивов "of integer" нужны всего 2 строчки: SetLength и Move.


test   (2009-04-09 15:35:00) [8]

Anatoly Podgoretsky ©   (09.04.09 15:19) [10]
Его же for инициализирует, а так она вообщем то нигде кроме for не используется. Да и пример я не прорабатывал, можно еще например сказать, что массивы не инициализированны. Фактически пример гоняет мусор между 3-мя массивами.


Anatoly Podgoretsky   (2009-04-09 15:19:00) [9]

> test  (09.04.2009 14:29:08)  [8]

Это ничего, что переменная цикла неопределена при выходе из цикла?


clickmaker   (2009-04-09 15:02:00) [10]

> Размер элементов массива в памяти заранее неизвестен

в этом случае спасет только некий признак конца массива. Как в нуль-терминированных строках pchar


test   (2009-04-09 14:29:00) [11]

var
 a,b,c:array of integer;
 count:integer;
begin
 SetLentgh(a,3);
 SetLength(b,9);
 SetLength(c,(Length(a)+Length(b)));
 for count := 0 to length(a)-1 do
   c[count] := a[count];
 for count := 0 to length(b)-1 do
   c[count+Length(a)] := b[count];
end;


Плохиш   (2009-04-09 14:20:00) [12]


> Есть массивA и есть массивB:
>
>
> var
>  A: Pointer;
>  B: Pointer;

Это в какой версии массивы переименовали в pointer?


Sapersky   (2009-04-09 14:20:00) [13]

http://www.rsdn.ru/article/Delphi/dynarrays.xml


Сергей М.   (2009-04-09 14:13:00) [14]


> Размер элементов массива в памяти заранее неизвестен


Никак.


@!!ex   (2009-04-09 14:04:00) [15]

SetLength, Length, CopyMemory и понеслась.
Кода врядли кто даст.


12   (2009-04-09 14:01:00) [16]

алгоритм как-то так
movememory с , a, length(a)
movememory с+length(a) , b, length(b)
setlength c,length(a)+length(b)


TUser   (2009-04-09 13:55:00) [17]

создать новый массив и копировать туда элементы


Palladin   (2009-04-09 13:17:00) [18]

никак


Наверх

Титульная страница Поиск, карта сайта Написать письмо