Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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(); теперь даже как-то неловко, типа, где же были мои глаза раньше...




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.05 c
14-42864          Wonder                2001-12-25 11:36  2002.02.14  
Merlin! Что же это такое началось?!


4-42903           ADM                   2001-12-13 06:52  2002.02.14  
Звук!!!!!


7-42875           pOintID               2001-11-07 16:09  2002.02.14  
MDI


3-42704           IVL                   2002-01-22 23:43  2002.02.14  
Компоненты Interbase


14-42863          petr_v_a              2001-12-26 21:58  2002.02.14  
>Yuvich личное