Показать сообщение отдельно
  #9  
Старый 20.11.2010, 20:38
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Есть логическое и физическое удаление. В случае с физическим удалением размер массива меняется в зависимости от количества элементов, а вот в случае логического удаления размер массива будет неизменным, но количество элементов может менятся.
Удаление элементов из статического массива можно реализовать таким образом:
Код:
Type
TArray100=array[1..100]of integer;
Var
 Arr: TArray100;
 ArrSize: Integer; // Переменная отвчающая за количество элементов в массиве.
begin
 ArrSize := 100;
 for i := 1 to ArrSize do Arr[i] := Random(100); //Заполним массив 
 ArrSize := 99;
 for i := 50 to ArrSize do Arr[i] := Arr[i+1];  //Удаляем 50-й элемент из массива 
end;
Т.е. физически массив как был 100 элементов, так и остался. Удаление элемента, это фактически сдвиг всех последующих после удаляемого элемента к началу. Для получения крайней границы массива мы используем переменную ArrSize
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием