Вниз
Скачать: CL | DM;

Как сложить динамические массивы?   Найти похожие ветки 

← →
REA ©   (2003-01-27 19:00) [0]

Сделал функцию, которая возвращает динамический массив. Как бы теперь ее результат присуммировать в конец другого массива желательно без CopyMemory (например Slice, Copy) и т.п. Строки ведь можно плюсом складывать...


← →
gsu ©   (2003-01-27 19:03) [1]

д. массивы (данные) целиком вообще не копируются (у мя, если кто умеет покажите, плиз)
а у тя я бы установил длину 1 массива и поэлементно ...


← →
REA ©   (2003-01-27 19:06) [2]

Да поэлементно то понятно что можно...


← →
gsu ©   (2003-01-27 19:07) [3]

(-:|~
ежли узнаешь кинь на мыло, оки ?


← →
REA ©   (2003-01-27 19:14) [4]

А не будет ли утечки памяти, если одному дин. массиву присвоить другой? Или лучше первому сначала явно Nil присвоить?


← →
gsu ©   (2003-01-27 19:15) [5]

>> одному дин. массиву присвоить другой
как a:=b ?


← →
REA ©   (2003-01-27 19:26) [6]

Ну да. Они же пойнтеры вроде почти за исключением того, что Delphi отслеживает счетчик ссылок на массив. Хотя видимо если в массиве что-то есть и ему присвоить другой, то его счетчик ссылок уменьшится и став равным 0 массив уничтожится.


← →
gsu ©   (2003-01-27 19:32) [7]

>> Или лучше первому сначала явно Nil присвоить
и первый сгинет в небытие
просто переприсваивай, а ненужные указатель заниляй

>> если в массиве что-то есть и ему присвоить другой, то его счетчик ссылок
>> уменьшится
увеличится

>> массив уничтожится
когда не будет ни одного указателя на него, т.е a,b, ...:=nil



← →
REA ©   (2003-01-27 19:42) [8]

Ну потом то понятно, что увеличится, но сначала то уменьшится.


← →
gsu ©   (2003-01-27 19:45) [9]

>> сначала то уменьшится
С самого начала увеличится от 0 до 1 (-:|~



← →
Sha ©   (2003-01-27 20:15) [10]

2 REA © (27.01.03 19:00)
Вот эквивалент для a:=a+b; (еслибы так было можно писать).

SetLength(a,Length(a)+Length(b));
System.Move(b[0],a[Length(a)],Length(b)*SizeOf(b[0]);


← →
gsu ©   (2003-01-27 20:28) [11]

т.е к концу а цепляется начало b, здорово



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.013 c
4-16006
Delphi5.01
2002-12-21 18:57
2003.02.06
MainMenu s Font


1-15631
Weare
2003-01-29 13:17
2003.02.06
Как во время создания объектов вывести предупреждающее окно


1-15673
Tsr
2003-01-20 21:07
2003.02.06
: Unsafe type TBookmark


1-15567
BOA_KAA
2003-01-27 11:00
2003.02.06
Настройки


6-15780
dkDimon
2002-12-12 22:54
2003.02.06
Мыло




   Наверх