Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 375

/ вопрос открыт /

Здравствуйте, эксперты!
Как удалить запись некоторого типа в файле (именно удалить) если известно положение записи? Спасибо!

Евгений Eklmn Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Евгений Eklmn (статус: Посетитель)
Вопрос отправлен: 25 февраля 2008, 15:37
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Помфюк Владимир Степанович

Здравствуйте, Трофимов Евгений!
Только "подтягиванием" всех последующих записей на одну позицию вверх. Ещё вариант: ввести признак "запись удалена" и проставлять его, а добавлять записи сначала заполняя записи с признаком удаления и только когда их нет - в конец файла.

Ответ отправил: Помфюк Владимир Степанович (статус: Абитуриент)
Время отправки: 25 февраля 2008, 15:56
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: min@y™

Предложу вариант с TMemoryStream.


  1. Берём Source, Dest: TMemoryStream;
  2. Грузим в Source исходный файл;
  3. Копируем кусок файла, находящийся до удаляемой записи методом Dest.CopyFrom(Source, [кол-во байт до записи]);
  4. Устанавливаем Source.Position за удаляемой записью путём присваивания или методом Source.Seek();
  5. Копируем кусок файла, находящийся после удаляемой записи методом Dest.CopyFrom(Source, [кол-во байт после записи]);
  6. Source.Free();
  7. Dest.SaveToFile('имя_файла.ext');

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 26 февраля 2008, 08:32


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:02
Выполнено за 0.04 сек.