Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.30;
Скачать: CL | DM;

Вниз

Удаление записи из массива   Найти похожие ветки 

 
XeON ©   (2006-07-12 00:37) [0]

Все здравствуйте. Хотелось бы узнать, как удалить элемент не нужный из динамческого массива? Но не обнулить, а именно удалить!  Так, что бы все остальные элементы сдвинулись вверх на 1. Если это имеет какое-то отношение к делу, то это массив записей. Т.е. массив типа TRecord.


 
Palladin ©   (2006-07-12 00:46) [1]

Type
TMyRec=Record
 ...
End;

Var
a:Array of TMyRec;

...
// удаление элемента с номером n
Move(a[n+1],a[n],(Length(a)-n-1)*SizeOf(TMyRec));


 
Palladin ©   (2006-07-12 00:48) [2]

и после еще
SetLength(a,High(a));


 
XeON ©   (2006-07-12 01:37) [3]

Спасибо за помощь, огромное! Данная информация меня просто спасла (от смерти :). Ещё раз спасибо, что откликнулся!


 
begin...end ©   (2006-07-12 07:25) [4]

В случае, если TRecord содержит поля типов с управляемым временем жизни, [1] не годится. В общем случае наиболее простым решением будет сдвиг не с помощью Move, а путём поэлементного присваивания, с последующим уменьшением длины массива.


 
han_malign ©   (2006-07-12 10:43) [5]


> begin...end ©   (12.07.06 07:25) [4]
> а путём поэлементного присваивания

Finalize(a[n]);
move(...);
FillChar(a[High(a)], sizeof(a[High(a)]));
SetLength(a, High(a));


 
begin...end ©   (2006-07-12 11:28) [6]

> han_malign ©   (12.07.06 10:43) [5]

Спасибо, но об этом способе я знаю (если, конечно, в третьей строке имелось в виду заполнение нулями). Однако назвать его наиболее простым я не могу -- обычное поэлементное присваивание гораздо проще. О чём и было сказано в [4].



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

Текущий архив: 2006.07.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
8-1139383204
AlexeyMir
2006-02-08 10:20
2006.07.30
Как муз.файла независимо воспроизвести на 2х звуковых


2-1152678274
Rubey
2006-07-12 08:24
2006.07.30
Нестандартный размер формы


15-1152002513
ПЛОВ
2006-07-04 12:41
2006.07.30
Существует ли что-то вроде универсального драйвера для IrDA?


2-1152284856
Юсуф
2006-07-07 19:07
2006.07.30
Вопросики вместо текста


2-1152714287
Elfebet
2006-07-12 18:24
2006.07.30
Передать несколько параметров