![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как соединить два динамических массива?
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]никак