|
0 / 0 / 0
Регистрация: 20.01.2009
Сообщений: 118
|
|
Как сохранить данные массивов в файл?11.04.2009, 16:27. Показов 5890. Ответов 7
Метки нет (Все метки)
Приветствую всех,
У меня в программе имеется несколько таблиц, заполняемых пользователем. Мне нужно добавить возможность сохранять всю эту информацию в файл. Информация каждой таблицы хранится в виде нескольких массивов (на каждый столбец по массиву). В принципе, можно на основе этих массивов создать один массив R x C, полностью хранящий всю информацию о таблице. Вопрос в том, как лучше этот массив сохранить в файл. Можно использовать Random Access, но проблема в том, что точно определить длину записи, необходимой для хранения массива, нельзя, потому что в ячейке может быть текст любой длины. Как быть? Я не совсем знаю, как использовать Binary Access. То есть как именно организовать запись информации, хранящейся в нескольких массивах (по 1 массиву на таблицу) в двоичный файл? Повторяю, количество байт, необходимых для хранения массива, точно неизвестно. Надеюсь на помощь.
0
|
|
| 11.04.2009, 16:27 | |
|
Ответы с готовыми решениями:
7
Как сохранить данные в файл??? Как сохранить данные в файл??? |
|
3 / 3 / 0
Регистрация: 16.01.2008
Сообщений: 359
|
|
| 13.04.2009, 05:30 | |
|
я наверное уже достал всех этой фразой.... но..
ПИШИ В ОБЫЧНЫЙ ТЕКСТОВЫЙ ФАЙЛ С РАЗДЕЛИТЕЛЯМИ. такой файл, кстати потом обратно в таблицу ложится без разговоров и без предварительной загрузки в массив.
0
|
|
|
0 / 0 / 0
Регистрация: 20.01.2009
Сообщений: 118
|
|
| 13.04.2009, 13:13 [ТС] | |
|
Спасибо за совет.
Нет, это не очень круто. Я хотел бы все-таки писать данные в двоичный файл. Для меня главное - узнать, как можно точно определить количество байт в конкретном массиве. То есть массив содержит, допустим, предложения, неизвестно какой длиные, и надо точно узнать, сколько надо места для его хранения. Может, Вы знаете, как это сделать?
0
|
|
|
3 / 3 / 0
Регистрация: 16.01.2008
Сообщений: 359
|
|
| 13.04.2009, 14:48 | |
|
т.е. ты хочешь сказать что тебе нужно знать сколько элементов массива имеют значения ?
т.е. определить количество элементов в массиве. Я недавно задавал тот же вопрос, меня правда не так поняли а я не стал объясняться. Мне кажется у тебя 2 варианта: 1. инициализировать каждый свой массив например нулями, после того как в элемент массива будут помещены данные они затрут нули но не все,т.е. если после инициализации элемент массива выглядит как: 000000000000000000000 то после записи в этот элемент он будет выгдядеть: Сидоров00000000000000 в таком случая можнобудет определить длину элемента массива 2. пиши в файл тупо весь элемент массива,т.е. как определил массив стоко и пиши
0
|
|
|
0 / 0 / 0
Регистрация: 20.01.2009
Сообщений: 118
|
|
| 14.04.2009, 14:42 [ТС] | |
|
Привет,
Нет, ты меня не понял. У меня массив строковых переменных. Допустим, в нем 10 элементов. Каждый элемент массива мы можем заполнить строковой переменной: либо одним словом, либо хоть целый роман записать. То есть длина каждого элемента массива неопределенна. Мне же надо создать функцию, которой бы я передавал такой массив, а она мне говорила: в настоящий момент, если весь массив записать в файл, понадобится 100 килобайт. Или только 100 байт. Вот так.
0
|
|
|
CatsTail
|
||||||
| 18.04.2009, 21:34 | ||||||
|
Вот ориентировочный (но работоспособный) пример кода:
Cats_Tail@mail.ru или abfaifel@online.ru Борис |
||||||
|
0 / 0 / 0
Регистрация: 20.01.2009
Сообщений: 118
|
|
| 19.04.2009, 19:33 [ТС] | |
|
Привет и спасибо за ответ,
Да, было бы интересно посмотреть весь проект. Если не сложно, отправь по micha12@yandex.ru. Я не совсем понимаю, почему ты записываешь каждый элемент массива отдельно, когда можно командой Put #1, , MyArray() записать целый массив, а потом командой Get #1, , MyArray() прочесть записанный массив (перед этим надо установить все его размерности). Из того, что ты написал, я понял, что ты рассчитываешь количество места для хранения массива путем суммирования места для каждого элемента. В принципе, можно. Неужели нет одной команды, которая бы сделала всю эту работу? Кстати, ты не знаешь, можно ли записать целый массив в массив типа Byte? Ведь в файл записывается именно содержание такого массива. А с помощью UBound(ByteArray) можно было бы рассчитать и требуемое место. Другая идея заключается в том, чтобы запомнить размер файла до записи в него массива, затем сравнить с размером файла после записи массива, и на этой основе рассчитать размер массива. Какая функцию выдает размер файла, знаешь? Надо решить эту проблему!
0
|
|
|
CatsTail
|
|
| 20.04.2009, 00:17 | |
|
Функцция получения размера открытого файла - LOF(номер_файла); неоткрытого - FileLen(Имя_файла); Одной командой Put записать массив можно и считать можно. А при записи по строкам, можно (при некотором упорстве) читать строки выборочно.
|
|
| 20.04.2009, 00:17 | |
|
Помогаю со студенческими работами здесь
8
Как сохранить данные в файл с кириллицей?
Как сохранить данные в CSV файл
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|