9 / 9 / 8
Регистрация: 02.01.2017
Сообщений: 262
|
||||||
1 | ||||||
Удалить запись в бинарном файле31.01.2017, 16:05. Показов 1289. Ответов 6
Метки нет (Все метки)
Доброго временни суток, пишу функции записи/чтения. В приложении есть массив очень сложных объектов класса с множеством структур и векторов классов с полями типа string,время на запись и чтение соответственно растет в математической прогрессии и не столько на запись сколько на структурирование записи и приведении её к типу char*.С чтением проблема решена(в заголовке каждой записи есть порядковый номер первого байта,размер записи и необходимое описние для вывода в список, полностью открывается только один объект класса выбранный юзером),с записью нового объекта ещё проще-дозапись в конец файла. А вот с удалением возникли трудности, зная адрес и длинну записи можно не тратить ресурс пк на подготовку к записи а попросту открыть в массив char* вырезать ненужное и сохранить.Написал функцию, но она не работает.
0
|
31.01.2017, 16:05 | |
Ответы с готовыми решениями:
6
Запись и чтение двух стеков в бинарном файле C++ Как в бинарном файле (.dat) удалять и редактировать выбранную запись Удалить строку в бинарном файле Запись\считывание матрицы в бинарном файле |
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
|
||||||
31.01.2017, 22:49 | 2 | |||||
1) Функция
strcat работает только с null-terminated строками. Используйте memcpy :
delete[] first .
1
|
9 / 9 / 8
Регистрация: 02.01.2017
Сообщений: 262
|
|
01.02.2017, 11:29 [ТС] | 3 |
Спасибо,нашел ещё memmove,но мой подход оказался неверным если записывать в заголовке каждой записи ее адрес и размер, то после первого удаления позиция записи смещается а адрес не перезаписывается....
Добавлено через 2 минуты разве что записывать только размер записи и исходя из очередности записей высчитывать ее положение в файле Добавлено через 2 минуты Так не хотел связываться с базами данных, может есть какие-то готовые решения или библиотеки для таких случаев....
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
01.02.2017, 11:42 | 4 |
0
|
9 / 9 / 8
Регистрация: 02.01.2017
Сообщений: 262
|
|
02.02.2017, 02:23 [ТС] | 5 |
пару моментов если не затруднит
Когда-то пытался покопать в этом направлении, но столкнулся с отсутствием доступного описания, не подскажете ресурс если такой есть. boost быстрее того-же SQL или чего-то из арсенала билдера(6-й). boost ,бесплатный даже для коммерческого использования? Добавлено через 13 часов 35 минут Установка boost Boost для счастливых владельцев XE3, у меня пока нет возможности потратить 1500$ на XE3 зато есть когда-то купленный builder6. И небольшое резюме исходя из того что я нашел в сети про boost Если раньше не сталкивался с бустом и нет необходимости в использовании буста в промышленных масштабах для ситуаци вроде моей проще налепить костыли, чтение документации поиски статей на родном языке займут время плюс ко всему boost не .h файл которому достаточно сделать #include а требует сборки библиотек и т.д. что требует определенного уровня подготовки(не считая описанных вариантов под visual). Единственный плюс boost.serialization это более высокая скорость сборки и распаковки архива.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
02.02.2017, 11:18 | 6 |
http://g.zeos.in/?q=boost.serialization&m=1
SQL к вашей ситуации не имеет ни малейшего отношения. этот вопрос задавайте в разделе билдера. http://g.zeos.in/?q=boost.license&m=1 boost для счастливых обладателей с++. заводится, и работает везде, где заводятся и работают компиляторы языка. на любых платформах. под любыми ИДЕ. если не осилили boost, смотрите в сторону cereal http://uscilab.github.io/cereal/ там одни *.h и да, это намного быстрее, проще, и эффективнее, чем лепить собственный тормозной и глючный велосипед с квадратными колесами. одни сплошные плюсы по сравнению с тем, что вы сами могли бы предложить.
1
|
02.02.2017, 12:28 | 7 |
Забейте на билдер, используйте что-то бесплатное. Например Qt (потом со времением если потребуется купите комерческую лицензию)
0
|
02.02.2017, 12:28 | |
02.02.2017, 12:28 | |
Помогаю со студенческими работами здесь
7
Можно ли изменить или удалить данные в бинарном файле В текстовом файле находятся записи о книгах в библиотеке; удалить из файла указанную запись БД в бинарном файле Поиск в бинарном файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |