![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
работа не волк....
Форумчанин
Регистрация: 09.06.2008
Сообщений: 337
|
![]()
Есть типизированный файл
Код:
Код:
Код:
В общем как удалить. В гугле такую команду не нашёл. Извиняюсь если зря расписывал код. Уже под сотню сообщений и никак не можете усвоить правила оформления кода тэгом? Тогда вам и программирование противопоказано.
Цель, для которой требуются неправые средства, не есть неправая цель.
Последний раз редактировалось Лукманов Александр; 07.03.2009 в 15:13. Причина: пардон. забываю. |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Существуют несколько подходов к решению этой задачи. Например, во многих БД (как простейший вариант - DBF) в каждой записи есть служебной поле DELETED если в нём служебная отметка ("*") то эта запись считается удалённой. Таким образом достигается высокая скорость удаления записи. Следующий подход: при удалении одной записи - надо просто каждую последующую переписать на место предыдущей (если удаляем 10-ю запись, то 11-ю запись пишем на место 10-й, 12-ю пишем на место 11-й и т.д. до конца файла. После чего файлу делаем truncate (обрезаем длину файла на размер одной записи).. Это может быть ОЧЕНЬ долго! и последний способ - сжатие удалённых записей - в новый файл переписываются все записи кроме тех, которые мы удалили (или которые были помечены как удалённые). После успешной записи исходный файл удаляем, новый файл переименовываем в имя исходого файла данных. всё. (BTW, именно так происходит сжатие удалённых записей в DBF файлах). удачи. |
|
![]() |
![]() |
![]() |
#3 |
работа не волк....
Форумчанин
Регистрация: 09.06.2008
Сообщений: 337
|
![]()
Спасибо большое. Первый пример самый классный. А ведь до него можно было и самому допереть.
Цель, для которой требуются неправые средства, не есть неправая цель.
|
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Во временный файл переписываем (BlockRead-BlockWrite) скопом все байты до начала записи, потом от начала следующей записи до конца файла. И переименовываем файл.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как отловить значение из таблицы? | mik | Microsoft Office Excel | 5 | 27.10.2008 16:34 |
как получить значение переменной | smoke888 | PHP | 3 | 20.06.2008 02:11 |
Как определить значение по графику? | leonid | Microsoft Office Excel | 4 | 27.05.2008 08:48 |
Как посчитать сумму строк во всех текстовых файлах? | qwestor | PHP | 8 | 30.12.2007 16:02 |
как удалить анти вирус( касперский 2006)если она не работает и ее не возможно удалить | Alar | Общие вопросы Delphi | 0 | 29.10.2006 21:36 |