Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Пришла мне такая мысль, сделать файл настроек из базы данных. Ну и как всегда аппетит начинает расти. Мысль такая... У каждого объекта свое оригинальное имя. Как мы знаем, в глобальной переменной [Self] как раз и находится это имя. Вроде бы все просто, присваиваешь объекту имя к примеру Booton , присваиваешь переменную [Booton] создаешь подпрограмму и одну команду для каждого объекта. Примерно так If "[[Self]]" "=" "" ... Но столкнулся когда мне нужна переменная плагина, а она такая, что объекту нельзя присвоить ее имя. 3DTitles. Вот тут и начались извращения. Ну соответственно и мозг начал работать в разных направлениях.:) Ну а чем больше он работае, тем больше направлений.
Вот и решил, а что если в базу запихивать все что нужно для работы программы. К примеру нужно на кнопке поменять файл изображения. Если сделать вложенный файл, то пользователь не сможет подсунуть свой. Если сделать внешний, пользователь сможет подсунуть, но так же может и испортить его. Его проблемы конечно, но все же... Если файл будет в базе, его всегда можно будет програмно заменить, добавить и т.д.
С этим понятно, теперь подпрограмма, для каждого объекта может быть одинаковый скрипт, но разные подпрограммы. Добавляем в базу имя подпрограммы, а в скрипте вставляем переменную в которую будет отправляться это имя. Удобно? Думаю что да. Хотя кто то может сейчас и не понять о чем я.
Несколько раз поднимали вопрос о защите программы. Тоесть сделать комерческую и как ее защитить от взлома. Тоже мысль пришла. В плагине NeoDouble есть команда npEjecutarAccion которая позволяет выполнить команды НБ из внешнего файла. Пишем программу, тестим, а после в базу закидываем файлы со скриптом для каждого, или для некоторых объектов. А в объектах вставляем команду из плагина. Получается что то типа функции, только она не внешняя, не вложенная, а находится в файле настроек. Всегда можно скрипт переписать, и заменить файл(ы).
Короче возможностей море.
Создавать такой файл каждый раз проблематично, решил сделать программу что бы она создавала таблицы(разделы) и поля(ключ=значения). Где ключ может быть как имя объекта, так имя переменной. А значение не одно как в файле ini или в реестре, а сразу несколько для объекта\переменной.
К примеру нам нужно менять значение переменной, но в какой то момент установить значение по умолчанию. Вот и пишем в базе : Имя объекта;Имя переменной;Значение переменной по умолчанию;Ширина;Высота;Цвет;Шрифт;Имена файлов;Видимость;Активность;Имя подпрограммы.....
головняков много будет... не спрашивай, не помню. Использовал я такой метод, потом отказался. Может помнишь тему создовал, для каждой переменной своя формула расчета. По сути тоже самое, но в процессе разработки стали появляться подводные камни. Короче, отказался от использования бд.
Добавлено (14 Апреля 2013, 21:39) --------------------------------------------- Это я написал про использования бд, как хранения функций и подпрограмм. А хранения значений каких либо переменных, не знаю есть ли смысл?! Если только сложных проектов, а так проект с двумя кнопками и бд настроек Тут от проекта зависит. Кстати, если бд повредится (не обязательно по вине юзера), тогда проект не запустится?
Ну конечно сложных, или для хранения функций и подпрограм для того что бы их можно было иметь возможность изменить.
Цитата (Сергей)
как хранения функций и подпрограмм.
Я пока не вижу в чем может быть проблема, посмотрим.
Цитата (Сергей)
Кстати, если бд повредится
Повредится может любой файл. Но я пока не встречал нигде что бы отказались от баз по этой причине. А многие конторы работают с базами в которых на много больше данных и ценность эти данные имеют побольше чем нежели файл настроек.
для хранения функций и подпрограмм для того что бы их можно было иметь возможность изменить
Если человек в состоянии изменить функцию или подпрограмму, то, скорее всего, это сам автор программы, а ему вполне можно изменения внести в самом проекте и перекомпилировать его.
Цитата (mishem)
Кто что думает по этому вопросу?
Я пока не понимаю, какие проблемы поможет решить именно такой подход. В чем его преимущества перед другими способами. Однако, думаю, что хранить настройки (включая картинки) в базе данных - вполне себе удобное решение. Можно в этом случае обходиться без реестра. В общем, пример на форуме явно не помешает! Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
а ему вполне можно изменения внести в самом проекте и перекомпилировать его.
К примеру ты создаешь триальную программу с урезанным функционалом. Ну например твоя программа при поиске выдает не все значения, а три. Показывает не весь список плагинов, а 10-50... В базе у тебя функция, или подпрограмма которая накладывает эти ограничения. Тебе заплатили за программу, и теперь вместо того что бы скачивать весь дистрибутив, ты меняешь текстовый файл в базе так же как обновляешь базу. И программа становится полностью функциональной. Это как пример. Не надо качать всю базу заново, просто меняешь текстовые файлы, в любое время когда тебе это надо.
Цитата (Вадим)
Я пока не понимаю, какие проблемы поможет решить именно такой подход.
Очень долго расписывать. К примеру кнопка по названием Booton1. Переменная заголовка [Booton1_Title] Переменные размеров [Booton1_X], [Booton1_Y] ну и т.д. Цвет, рамка, путь к картинкам... Все это нужно хранить в реестре, в ini, или в самой программе. Сколько строк? А если объектов 50-100. Плюс значения по умолчанию. Теперь предположим нам надо получить, записать значения. Для каждого объекта придется писать свой код. Ну с этим просто столкнутся надо. Для организации поиска придется искать каждую переменную. В базе мы первое поле пишем с названием объекта. А дальше поля Имя переменной, Значение переменной, Значение по умолчанию, Цвет объекта, стиль, путь к рисунку1, путь к рисунку2..... На сколько фантазии хватит. Теперь пишем подпрограмму. Имя объекта в НБ повторится не может. Поиск по базе выдаст нам одну строку в которой мы будем иметь все значения которые нам нужны.... Короче пробовать надо и все будет понятно. Не хочешь читать хелп?