Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Типизованные файлы   Найти похожие ветки 

 
Алексей   (2004-03-06 10:36) [0]

Народ, подскажите, если можно по подробнее, как можно удалить запись из типизованного файла???


 
Alex Konshin ©   (2004-03-06 10:37) [1]

В общем случае - записать в новый файл все, кроме без этой записи.


 
Алексей   (2004-03-06 10:41) [2]

Это не выход, есть кое какие наброски. Но это тоже не устраивает. Нуден конкретный алгоритм, желательно с кодом.


 
Alex Konshin ©   (2004-03-06 10:46) [3]

Ну можешь чуть оптимизировать - перезаписывать только часть файла после этой записи. Для каких-то специфических случаев можно еще придумать какую-то оптимизацию, но в общем случае - только так.
Чудес не бывает. Ты просто представь, как эти данные на диске хранятся и делай выводы.


 
Булат Шакиров   (2004-03-06 10:59) [4]

Может так:
"открываете файл, как бинарный, составляете список длин записей, и копируете куски файла в другой с помощью BlockRead/BlockWrite"


 
Rouse_ ©   (2004-03-06 11:06) [5]

> [4] Булат Шакиров   (06.03.04 10:59)
Обьясни мне плз ламеру, что есть бинарный файл, и чем от отличается от обычного текстового?
(Я только завтра начну учиться программированию)


 
Alex Konshin ©   (2004-03-06 11:07) [6]

И почему это будет не копирование в новый файл без этой записи?


 
Rouse_ ©   (2004-03-06 11:08) [7]

> копируете куски файла в другой
К чему подобное расточительство? - так пустячок?


 
Anatoly Podgoretsky ©   (2004-03-06 11:39) [8]

Предстась что это у тебя не файл а линейка и из нее нужно вырезать два сантиметра


 
TUser ©   (2004-03-06 11:42) [9]

В детстве была у меня в школе линейка, где несколько см было вырезано и склеено скотчем *)


 
Anatoly Podgoretsky ©   (2004-03-06 11:47) [10]

Вот это надо и сделать оставшийся кусок приклееить к старому.


 
TUser ©   (2004-03-06 11:50) [11]

Вспоминаю, забавная с ней была арифметика - типа 5+3=10. Жаль выбросил быстро.


 
Алексей   (2004-03-06 12:04) [12]

Все, что связанно с копированием в дополнительный файл отпадает. Есть другой алгоритм вырезки. Делается все так, добавляется новое поле Record.Visible типа Boolean, и в зависимости от его значения ведется отображение записей. Далее после того как это поле стало Record.Visible:=False, в цикле перебераются все записи, и добавляются в конец файла с условием Record.Visible:=True, после чего они переносятся в начало файла а остаток просто обрезается. Но это это не устраивает. Надо что-то более рациональное.


 
Anatoly Podgoretsky ©   (2004-03-06 12:11) [13]

Тогда базы данных, индексы, признаки


 
dmk ©   (2004-03-06 13:33) [14]

Не удаляй запись, а помечай ее флагом "Пустая запись".
При перезаписи назначай соответствующий индекс и иногда
производи сортировку записей (переиндексацию).


 
TUser ©   (2004-03-06 13:37) [15]

Нет, БД луше - гемороя меньше.


 
Алексей   (2004-03-06 13:43) [16]

>>>Не удаляй запись, а помечай ее флагом "Пустая запись".
>>>При перезаписи назначай соответствующий индекс и иногда
>>>производи сортировку записей (переиндексацию).

А по подробнее, как све ендо можно реализовать?????


 
dmk ©   (2004-03-06 21:24) [17]

Для этого рекомендую завести отдельную
таблицу в которой хранятся индексы и
смещения к записям. И эту таблицу например
можно дописывать каждый раз в конец файла или
в отдельный "файл-спутник". Например имя тоже,
а расширение другое. Все от ситуации зависит.

Без нормального проектирования можешь себе
головную боль заработать.

ps. Все это уже реализовано в базах данных.
Изучи какую-нибудь и используй на здоровье =)


 
CyberStorm   (2004-03-06 21:55) [18]

Ну зачем же сразу индексы и смещения все гораздо проще - берется последняя запись и записывается на место удалаемой, затем файл обрезается на одну запись с конца - все быстро и не требует длительных операций. Все работает мгновенно при любых объемах информации.


 
Mim   (2004-03-07 00:08) [19]

CyberStorm   (06.03.04 21:55) [18]

Сработает, если записи в файле не упорядачены, иначе индексы и подобная штука и возвращаемся к БД :).



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.022 c
14-1078050891
VMcL
2004-02-29 13:34
2004.03.28
Навеяно постом


1-1078585827
InfoCar1
2004-03-06 18:10
2004.03.28
кнопка [х] в заголовке окна


11-1056886901
Ajax
2003-06-29 15:41
2004.03.28
8-ми битные BMP в KOL


6-1074410616
SergP
2004-01-18 10:23
2004.03.28
Как прочитать текст странички из окна эксплорера?


8-1069047298
Millennium
2003-11-17 08:34
2004.03.28
Как загрузить 7500 bmp