![]() |
|
![]() ![]() ![]() |
|
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Доброго времени суток.
Подскажите, каким образом ф-ции "rf" и "wf" должны читать файл в Settings::registerFormat("ext", rf, wf), и как декодировать-энкодировать данные для чтения-записи. Т.е. то что они читают-пишут понятно, данные декодирую-энкодирую я, но как их записывать чтоб потом прочитать ??? Непонятно.... Их что-ли как-то склеивать-расклеивать нужно, записывать размер блока для последующего чтения ??? Примного благодарен. Это сообщение отредактировал(а) andrew_121 - 24.3.2008, 13:43 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Кто нибудь, отзовитесь..............
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Ну, хоть кто-нибудь .......
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
andrew_121, не паникуй. Раз не отвечают, значит, не сталкивались. Неужели в документации нет примера или пояснения?
|
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Вот что приведенно в доках:
Format QSettings::registerFormat ( const QString & extension, ReadFunc readFunc, WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive ) [static] Registers a custom storage format. On success, returns a special Format value that can then be passed to the QSettings constuctor. On failure, returns InvalidFormat. The extension is the file extension associated to the format (without the '.'). The readFunc and writeFunc parameters are pointers to functions that read and write a set of (key, value) pairs. The QIODevice parameter to the read and write functions is always opened in binary mode (i.e., without the QIODevice::Text flag). The caseSensitivity parameter specifies whether keys are case sensitive or not. This makes a difference when looking up values using QSettings. The default is case sensitive. By default, if you use one of the constructors that work in terms of an organization name and an application name, the file system locations used are the same as for IniFormat. Use setPath() to specify other locations. Example:
Как-бы не тупой, но............. И в examples - ах нечего !!!! -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Вот типдефы этих функций:
Вот определение SettingsMap:
По сути обычный массив Ключ=Значение (как в ini файлах) Если я правильно понимаю логику, то при входе в myReadFunc у нас есть открытый файл с нашим расширением и указатель QIODevice для работы с этим файлом, т.е. мы сами читаем что надо. Если сравнить прототипы функций, то напрашивается мысль, что отсутствие const для map говорит о том, что мы должны сами заполнять его по переданной ссылки. При входе в функцию myWriteFunc у нас есть заполенный map, это те данные, который мы должны записать имея указатель на открытый файл переданный как указатель на класс QIODevice. Т.е. в любом случае мы ограничены интерфейсом "Ключ=Значение". А ключ уже может быть хоть индексом массива, хоть примари ключем базы данных. Т.е. функции разовые, насколько я понял, 1 раз все считывается в map и 1 раз все махом сохраняется из map. Т.е. следить за указателями не нужно. Это сообщение отредактировал(а) SABROG - 24.3.2008, 18:30 |
||||
|
|||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
SABROG, Спасибо за помощь, то-что ф-циям передается "QIODevice &" и "QSettings::SettingsMap &", понятно,
а допустим, я хочу зашифровать ключ и значение каким-то алгоритмом, зашифровал, записал, хочу прочитать, И ОП-ЛЯ попал... Какая позиция в файле у третьего ключа ??? Ааааа.......... Вот я о чем ......... Это сообщение отредактировал(а) andrew_121 - 24.3.2008, 18:39 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Обычно шифруют чем-то и расшифровывают тем же, заставь пользователя вводить логин и пароль и расшифровывай. Хоть третий ключ, хоть двадцатый. Зависит от структуры которую выбереш.
Ты же никакой информации не предоставляешь! Я могу сейчас заксорить файл какой-нибудь однобайтовым значением, который вобью с закрытыми глазами. Прога его зашифрует, а потом я приду на форум и спрошу че делать, заксорил файл, а чем разксоривать не знаю... Функции вызываются один раз (я уверен в этом на 80%), поэтому тебе не нужно думать о том, что программа спросит тебя достать из файла ключ с номером 666, а ты будешь стоять на ключе 13. Твоя задача заполнить map один раз, от нуля до конца и забыть. Вот еще что добавлю. Если собираешься держать ключи и значения в двоичном файле, то придется придумать свою структуру по которой сможешь определить смещение любого ключа в файле. Для этого в начале файла отводится хидер, под готорый отводится энное количество байт. В него пихается информация о количестве ключей. А чтобы не сканировать весь файл (если он несколько гигабайт) сразу после инфы о количестве ключей идут подрят такое же количество 4х байтовых смещений в файле, где каждое смещение равно адресу значения (или пары ключ=значение). Поэтому чтобы достучаться до любого параметра, достаточно считать такой хидер в массив и по индексу получать смещения в файле. Понятно, если файл будет двоичным и не установить рамки в виде максимальной длинны ключа и значения, то информацию в таком файле надо будет стирать полностью и записывать из map'a заново всю структуру. Это сообщение отредактировал(а) SABROG - 24.3.2008, 18:53 |
|||
|
||||
andrew_121 |
|
||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
А где он, третий ключ ???
А мне кажется что это калбаки. -------------------- Удалил аккаунт. Прощайте! |
||||
|
|||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Сказал бы я где ![]()
Калбэки не будут пихать указатель на целый QMap, максимум - требование возвратить QVariant'ное value по QString'у в параметре. |
|||
|
||||
andrew_121 |
|
||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Сделал, но УВЫ...
Функции даже не вызываются ! Это сообщение отредактировал(а) andrew_121 - 24.3.2008, 23:40 -------------------- Удалил аккаунт. Прощайте! |
||||
|
|||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Ты хочешь, чтобы тебе помогли разобраться или уже просто опустил руки ? Ни ошибок, ни отчетов, ни того как должно работать, ничего. Непонятно вообще что искать, если неизвестна даже ошибка, одно слово "УВЫ". [Ю]зер, [О]ператор Ю - Алло, техподдержка ? О - Да, что случилось ? Ю - Я купил ваш компьютер, а он не работает! Хелп! Ю - вы меня слышите ? Ю - ну ответьте же что-нибудь! Ю - кто-нибудь Ауууу... |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 11 Всего: 93 |
Думаю, начать стоит с корректной реализации ф-ции записи, а уж потом писать ф-цию чтения. Корректная реализация - это как минимум та, которая позволяет потом однозначно трактовать записанные данные. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Я не из ТАКИХ, не первый год кодирую.
Сделал все как пологаеться, но эти функторы даже не вызываются !!! -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
SABROG:
Расмешил, хоть какая-то радость СеГоДнЯ !!!.......... Добавлено через 5 минут и 45 секунд archimed7592, а чЁ у меня предупреждений аЖ 10% ась ...? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
А че рассмешил то ? Я вот об этом и говорю. Файлик на чтение точно есть в "user's home directory" ? Что пишет в консоли ? Похоже на допрос, как будто это нам нужно. Вот это действительно смешно ![]() |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 11 Всего: 93 |
Там есть поле "причина" - весьма информативное поле. andrew_121, если хотите помощи, то стоит немного сбавить гонор. В частности, у не первый год программирующего человека сабжевого вопроса даже не возникло бы. P.S. andrew_121, где надо форматированием не пользуетесь, где не надо - пользуетесь. Выглядит немного нелепо. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
|
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
1. Где функция записи?
2. Формат зарегился нормально? registerFormat не вернула InvalidFormat? Добавлено через 1 минуту и 37 секунд PS Зачем кстати QSettigns динамически создавать. Тем более без парента... Добавлено через 2 минуты и 37 секунд Ах да - с чего ты решил, что функция тут же должна вызваться? Вполне возможно, что это просходит при первом чтении чего-либо. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |