| 
| 
 | Вопрос # 1 375/ вопрос открыт / | 
 |  Здравствуйте, эксперты!Как удалить запись некоторого типа в файле (именно удалить) если известно положение записи? Спасибо!
 
|  |   Вопрос задал: Евгений Eklmn (статус: Посетитель)Вопрос отправлен: 25 февраля 2008, 15:37
 Состояние вопроса: открыт, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Помфюк Владимир Степанович Здравствуйте, Трофимов Евгений!Только "подтягиванием" всех последующих записей на одну позицию вверх. Ещё вариант: ввести признак "запись удалена" и проставлять его, а добавлять записи сначала заполняя записи с признаком удаления и только когда их нет - в конец файла.
 Ответ #2. Отвечает эксперт: min@y™ Предложу вариант с TMemoryStream. 
 
 Берём Source, Dest: TMemoryStream;
Грузим в Source исходный файл;
Копируем кусок файла, находящийся до удаляемой записи методом Dest.CopyFrom(Source, [кол-во байт до записи]);
Устанавливаем Source.Position за удаляемой записью путём присваивания или методом Source.Seek();
Копируем кусок файла, находящийся после удаляемой записи методом Dest.CopyFrom(Source, [кол-во байт после записи]);
Source.Free();
Dest.SaveToFile('имя_файла.ext');
 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 26 февраля 2008, 08:32
 
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |