Вниз
Скачать: 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.011 c
1-15712
Darkwin
2003-01-27 11:58
2003.02.06
Почему так?


7-15975
Erlan
2002-11-27 09:20
2003.02.06
Проблема с vxd


1-15728
vic_774N
2003-01-27 11:18
2003.02.06
Сортировка не происходит ! Где я ошибся ?


1-15534
sers
2003-01-27 11:10
2003.02.06
Эффекты с графикой


1-15753
Jaxtor
2003-01-28 12:25
2003.02.06
Значение 0x7FFF




   Наверх