Текущий архив: 2003.02.06;
Скачать: 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 вся ветка
Текущий архив: 2003.02.06;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.009 c