Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
Алексей   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.057 c
3-1077807796
Andrew
2004-02-26 18:03
2004.03.28
всем здрасти! подскажите плиз, что то не получется отобразить


1-1078558582
Алексей
2004-03-06 10:36
2004.03.28
Типизованные файлы


6-1073871867
iWorm
2004-01-12 04:44
2004.03.28
Учет количества переданных байт


7-1072548423
Morfey
2003-12-27 21:07
2004.03.28
dll


3-1077721146
Uran
2004-02-25 17:59
2004.03.28
Ошибка отображение символов кирилицы dbf файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский