Форум: "Основная";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];
Внизудаление записи изи типизированного файла Найти похожие ветки
← →
Timka (2002-01-21 08:59) [0]Прошу подсказать. есть ли возможность убрать(удалиить) запись из типизированного файла, не переписывая файл целиком
← →
Vovochka_guest (2002-01-21 09:05) [1]Поставить/ввести атрибут у записи что она удалена?
← →
Фэ (2002-01-21 19:59) [2]Совет - попробуй вырезать нутрь у арбуза его не разрезая.
Если получиться, то и здесь будет надежда.
← →
Timka (2002-01-24 09:02) [3]если ввести атрибут, усложнится взаимодействие с программами, а что касается жратвы, я ведь могу взять и отгрызть последнюю сосиску из Бухты. может и тут есть способ "отрезать" конец файла?
или как вариант - может есть способ по полю, вставленному в TCHekBox навести соответствие с записью в файле, указав какую-то ф-цию?
← →
Alx2 (2002-01-24 09:07) [4]>Timka © (24.01.02 09:02)
"тут есть способ "отрезать" конец файла?"
Уж что, а способ конец отрезать, кажется, есть везде :)
Посмотрите в Delphi Help procedure Truncate(var F);
← →
DMN (2002-01-24 11:40) [5]Открываем файл, перемещаемся к последней записи, читаем ее, перемещаемся к удаляемой записи, записываем на ее место последнюю, перемещаемся к последней записи, обрезаем (или кастрируем?) файл. Он на одну запись короче, мы его не перезаписывали, нужную удалили.
Если порядок записей важен, то надо переписывать все записи после удаленной на одну назад, переписав последнюю - обрезаем файл...
← →
Фэ (2002-01-24 11:51) [6]Особенно впечатлит работа при числе записей несколько сот тысяч
← →
DMN (2002-01-24 12:10) [7]Правильнее всего, видимо, комбинированный подход: если порядок записей не важен, то смело можно переписывать последнюю взамен удаленной. А если важен - расставлять атрибут "удалено" и время от времени перепаковывать файл, как делается в dBase, например. Есть еще более продвинутый вариант, со страничной организацией файла.
← →
Alx2 (2002-01-24 12:13) [8]На такие масштабы есть специализированные СУБД.
В крайнем случае, спасет индексирование/хэширование.
А решением проблемы скорости в общем случае (для любого количества записей), давно занимаются разработчики движков для БД. И бегать наперегонки с ними, думаю, нет резона.
← →
amamed_3071 (2002-01-24 12:23) [9]използуй
BlockRead
BlockWrite
a потом Truncate
← →
Anatoly Podgoretsky (2002-01-26 23:15) [10]Фэ © (24.01.02 11:51)
Для таких объемов надо использовать или другие методы хранения или другие подходы к обработке данных, в то же время 100000 записей не очем не говорит, если размер записи маленький, скажем до 100 мегабайт, то можно весь файл хранить в памяти.
Во всяком случае сначало надо поработать над постановкой задачи.
← →
Timka (2002-01-31 08:34) [11]большое спасибо за Trunc(); теперь даже как-то неловко, типа, где же были мои глаза раньше...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c