powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Удаление записи из файла
11 сообщений из 11, страница 1 из 1
Удаление записи из файла
    #33376586
Glock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть у меня структура, скажем, такая:
Код: plaintext
1.
2.
3.
4.
struct guy_t {
    int id;
    char[ 20 ] name;
}
Какая-то последовательность таких структур записывается в файл. Далее встает задача - удалить те записи, у которых id, скажем, от 5 до 15.
Я додумался только до двух вариантов решения такой задачи:
1. окрыть файл для чтения, считать его содержимое в массив структур guy_t, потом открыть файл на перезапись и записать в него только те, у которых id меньше 5 или больше 15
2. создать временный файл, куда записать те записи, которые должны сохраниться (с id меньше 5 или больше 15), потом заменить этим файлом исходный.
Оба решения кажутся несколько громоздкими, может есть более простой путь?
...
Рейтинг: 0 / 0
Удаление записи из файла
    #33376641
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отмечай удаленные и не читай их
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Удаление записи из файла
    #33376860
Glock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм, тоже вариант... Однако все равно придется выполнять сжатие файла одним из вышеуказанных способов.
...
Рейтинг: 0 / 0
Удаление записи из файла
    #33376884
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlockХм, тоже вариант... Однако все равно придется выполнять сжатие файла одним из вышеуказанных способов.
Да, но сжатие выполняется не так часто как удаление... Поэтому, в итоге потери времени на "сжатие" файла будут намного меньше...
И еще: если список "полей" структуры еще не окончательный, то я рекомендовал бы добавить еще одно поле:
char deleted;
для указания факта логического (без сжатия файла) удаления "записи"...
Кстати, похожим образом организовано хранение данных в формате dbf-файла:
- в заголовке имеем количество записей, описание полей записи (название, тип, длина в символах) + прочая служебная информация
- после специального символа, ограничивающего заголовок, расположены сами данные....

Так что, "все уже давно было выдумано"...
...
Рейтинг: 0 / 0
Удаление записи из файла
    #33376886
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любом случае, перезапись - не лучший вариант
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Удаление записи из файла
    #33376893
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас БарабасВ любом случае, перезапись - не лучший вариант
Posted via ActualForum NNTP Server 1.3
Но именно так происходит упаковка/сжатие, например dbf файлов...
И именно упаковка/сжатие позволяет иногда (когда очень много удаленных записей) повысить скорость работы приложения...
Естественно, что упаковка делается нечасто. Например, 1 раз в неделю при интенсивной работе...
...
Рейтинг: 0 / 0
Удаление записи из файла
    #33377018
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C.Но именно так происходит упаковка/сжатие, например dbf файловя говорю о перезаписи существующего файла. Упаковка дбф происходит именно не так. На самом деле, сначала пишется новый файл, который заменяет старый только в случае успеха операции. Никаких перезаписей в старом файле не происходит - это прямой путь в ад
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Удаление записи из файла
    #33377025
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C.....именно упаковка/сжатие позволяет иногда (когда очень много удаленных записей) повысить скорость работы приложения...
Естественно, что упаковка делается нечасто. Например, 1 раз в неделю при интенсивной работе...

влияние редкой инфы в Ваших массивах данных - зависит от алгоритмов обработки этих данных. Зная это - можно подсчитать самый НЕ эффективный случай при всех исходных. Потом подумать - как часто сие будет происходить, причины приведшие к этому... Это предпосылки реально прикинуть проблему, если такая будет.

по поводу упаковки - так же может приводить а новой аллокации места на диски (всё зависит от логики) - посему это не панацея. Как грамотно её делать - это вот более (на мой взгляд) интересная весчь. А делать её мона и постоянно кстати, в фоновом режиме, тихой сапой...если уж Вам так необходимо.


с уважением
(круглый)
...
Рейтинг: 0 / 0
Удаление записи из файла
    #33377035
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас потихоньку придем к теме создания самописного SQL-сервера
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Удаление записи из файла
    #33377042
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабас....SQL-сервера ....

с использование сервака приложения !!!

:)

даёшь понедельник !
(круглый)
...
Рейтинг: 0 / 0
Удаление записи из файла
    #33377383
Glock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, SQL-сервер - сие чуток многовато для лабораторной :)
Вариант с пометкой на удаление вполне устраивает, а что лучше создавать временный файл - это согласен, действительно лучше :) Всем спасибо
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Удаление записи из файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]