IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Записи, Удаленей информации полей записи
TS*
сообщение 5.03.2006 0:13
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 71
Пол: Мужской
Реальное имя: Max

Репутация: -  0  +


Какой существует более простой способ стирания информации с полей записи одного елемента "массива записей", чем присваивание этому елементу значений не заполненого елемента этого же "массива записей"?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.03.2006 0:19
Сообщение #2


Гость






blink.gif
Что значит "более простой"? Быстрее? Меньше писанины? Надежнее?
Саму запись тоже приведи, ибо в зависимости от этого могут быть разные ответы...
 К началу страницы 
+ Ответить 
TS*
сообщение 5.03.2006 0:35
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 71
Пол: Мужской
Реальное имя: Max

Репутация: -  0  +



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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.03.2006 0:51
Сообщение #4


Гость






совсем коротко (если 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*
сообщение 5.03.2006 1:13
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 71
Пол: Мужской
Реальное имя: Max

Репутация: -  0  +


Благодарю!
good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 6:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"