Помощь - Поиск - Пользователи - Календарь
Полная версия: Записи
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
TS*
Какой существует более простой способ стирания информации с полей записи одного елемента "массива записей", чем присваивание этому елементу значений не заполненого елемента этого же "массива записей"?
volvo
blink.gif
Что значит "более простой"? Быстрее? Меньше писанины? Надежнее?
Саму запись тоже приведи, ибо в зависимости от этого могут быть разные ответы...
TS*

procedure del_item(j:byte);
begin
for i:=j to nums do
note[i]:=note[i+1];
num_rec:=num_rec-1;
end;



где num_rec -- номер записи, note -- масив записей, сам масив note создаеться с одним лишним элементом, значение которого(а значения его полей "пустые" присваивиться) елементу который удаляеться, а елементы которые стоят после него на "один" "опускаються". Хотелось чтобы не нужно было создавать "лишний элемент".
А также чтобы было меньше писанны... wacko.gif
volvo
совсем коротко (если num_rec - размер массива ДО удаления элемента):
procedure del_item(j:byte);
begin
move(note[j+1], note[j], (num_rec - j)*sizeof(note[1]));
dec(num_rec);
end;

- полный аналог твоего кода, только вот выполняться будет в несколько раз быстрее... И не надо ничего ничему присваивать... Просто не обращай на последние "недействительные" элементы внимания. Не зря же у тебя есть num_rec... Если же так хочется их все же обнулить, то создай константу с пустой записью EmptyRec и делай:
procedure del_item(j:byte);
begin
move(note[j+1], note[j], (num_rec - j)*sizeof(note[1]));
note[num_rec] := EmptyRec; dec(num_rec);
end;
TS*
Благодарю!
good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.