Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В чем хранить натсройки программы. Что бы был доступ 
:(
    Опции темы
Хоббит
Дата 22.6.2006, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



Настройки храняться в файле. Как организовать класс с данными натсройками, чтобы было красивше.
Сделать статический класс, который будет грузить данные из файла, туда же их сохранять при изменении. + доступ из любой точки - не люблю статические классы

Или сделать не статический класс, создавать его элемент. запускать функцию типа Load которая будет грузить настройки программы и работать с ними.
PM MAIL   Вверх
Exception
Дата 22.6.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Цитата(Хоббит @  22.6.2006,  15:04 Найти цитируемый пост)
храняться


что делают - хранятся

Цитата(Хоббит @  22.6.2006,  15:04 Найти цитируемый пост)
Как организовать класс с данными натсройками, чтобы было красивше.


И чем тебе не нравится стандартный System.Configuration? 
PM   Вверх
Prehistorik
Дата 22.6.2006, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 30.5.2006
Где: СПб

Репутация: 2
Всего: 3



Попробуй работать с AppConfig... Там уже всё сделано :-) 
--------------------
Есть только один бог - Ассемблер, и С - пророк его. 
PM MAIL   Вверх
Хоббит
Дата 22.6.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



вот те раз... пояните что такое System.Comfgi и AppConfig чем они отличаються...
Мне надо хранить настройки программы типа .размеры окон .рабочая директория .настройки видимости контролов. панелей и.т.д... для удобства работы

А также надо хоранить данные проектов, которые программа создает (типа файлов) то есть почти теже настройки что и для программы, только отдельные для каждого файла проекта 
PM MAIL   Вверх
Pankon
Дата 22.6.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 739
Регистрация: 2.6.2005

Репутация: 3
Всего: 5



Вначале вставь app.config
Проект -> Вставить -> Конфиг. файл

А потом смотри 
System.Configuration.ConfigurationManager.AppSettings  

Это сообщение отредактировал(а) Pankon - 22.6.2006, 17:02
PM MAIL   Вверх
mr.DUDA
Дата 22.6.2006, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Pankon @  22.6.2006,  17:01 Найти цитируемый пост)
Вначале вставь app.config
Проект -> Вставить -> Конфиг. файл

А потом смотри 
System.Configuration.ConfigurationManager.AppSettings  

ИМХО, не катит, потому что хранить нужно информацию динамически изменяемую приложением:

Цитата(Хоббит @  22.6.2006,  16:50 Найти цитируемый пост)
Мне надо хранить настройки программы типа .размеры окон .рабочая директория .настройки видимости контролов. панелей и.т.д... для удобства работы


В таких случаях можно либо воспользоваться средствами .NET 2.0 (вроде, специальные конфиги создаются с доп. расширением ".config.user"), либо создав типизированный датасет, сохранять и загружать из него в XML-файл в директории приложения, а уже в датасете (в виде таблиц с полями) хранить хоть какие угодно настройки. Например, добавить табличку "WindowLayouts" с ключевым полем "FormName" и полями "X", "Y", "Width", "Height", "State" и т.п. Датасет можно запихнуть в статик-класс (или синглтон, как кому больше нравится) и делать Load при первом обращении на чтение, а Save - при выходе из приложения. Тогда  прочитать или записать любую настройку обязан уже класс-обёртка датасета, а приложение работает с удобным классом конфигурации. 


--------------------
user posted image
PM MAIL WWW   Вверх
Hidrag
Дата 23.6.2006, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



.... а почему про реестр никто не вспомнил или я чего то не понимаю? Разве там не удобно хранить настройки? 


--------------------
user posted image
PM WWW ICQ   Вверх
mr.DUDA
Дата 23.6.2006, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Hidrag @  23.6.2006,  06:31 Найти цитируемый пост)
.... а почему про реестр никто не вспомнил или я чего то не понимаю? Разве там не удобно хранить настройки? 

удобно, если только не предполагается copy deployment и наличие настроек по умолчанию 


--------------------
user posted image
PM MAIL WWW   Вверх
Pankon
Дата 23.6.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 739
Регистрация: 2.6.2005

Репутация: 3
Всего: 5



Цитата(Хоббит @  22.6.2006,  16:50 Найти цитируемый пост)
размеры окон
 и другие подобние вещи (например, измененный текст в текстбоксе smile) можно сохранять автоматом (mr.DUDA - воспользоваться средствами .NET).
В дизайнере -> выбрать элемент управления -> Свойства -> Данные -> Установки приложения(ApplicationSettings) -> PropertyBinding -> Вылетает окно (Установки для элемента управления) -> Выбираешь свойство (Size, Text, Location, ...) -> В дропдавн выбираешь нью -> задаешь Name -> Ок

Все  smile 

Посмотреть все используемые установки
Проект -> Свойства -> Установки
Здесь, кстати, можно задать уровень "доступа" - Пользователь или Приложение.


Студия сама пихает нужные узлы в апп.конфиг (в userSettings) и организует классы для сериализации.

 smile   

Это сообщение отредактировал(а) Pankon - 23.6.2006, 12:59
PM MAIL   Вверх
ivashkanet
Дата 23.6.2006, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Pankon @  23.6.2006,  12:45 Найти цитируемый пост)
В дизайнере -> выбрать элемент управления -> Свойства -> Данные -> Установки приложения(ApplicationSettings) -> PropertyBinding -> Вылетает окно (Установки для элемента управления) -> Выбираешь свойство (Size, Text, Location, ...) -> В дропдавн выбираеш нью -> задаешь Name -> Ок

Класс, а я и не знал  smile  
PM MAIL WWW ICQ   Вверх
Хоббит
Дата 23.6.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



а изменять их как... например надо хранить адресс сервера БД 
PM MAIL   Вверх
ivashkanet
Дата 23.6.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Хоббит, тебе ж сказали: 
Цитата(Pankon @  23.6.2006,  12:45 Найти цитируемый пост)
Посмотреть все используемые установки
Проект -> Свойства -> Установки
Здесь, кстати, можно задать уровень "доступа" - Пользователь или Приложение.

2 Pankon, у тебя что? Студия русифицированная? 
PM MAIL WWW ICQ   Вверх
Pankon
Дата 23.6.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 739
Регистрация: 2.6.2005

Репутация: 3
Всего: 5



Нет 
Это я пытался переводить  smile  

Это сообщение отредактировал(а) Pankon - 23.6.2006, 13:50
PM MAIL   Вверх
mr.DUDA
Дата 23.6.2006, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Ага, круто конечно. Только есть неудобства: если таким образом привязать размер формы к settings, то в дизайнере изменить размер не получится - при открытии формы, будут восстанавливаться настройки из settings. Другое неудобство: файл "моё_приложение.user.config" располагается в нескольких местах сразу (вот незадача), но только не в папке с приложением. Например, нажав на кнопку "Synchronize" (в окне редактирования setting-ов), получаю приаттаченный мессадж бокс. Это что же выходит, конфиг для приложения лежит в восьми директориях сразу !  smile 

З.Ы. так и не получилось привязать размер/позицию формы к сеттингам - просто ничего не сохраняется, и всё.  smile 

З.Ы.(2) а то что сделано руками, будет работать как предполагалось...  smile  

Присоединённый файл ( Кол-во скачиваний: 82 )
Присоединённый файл  shot.JPG 63,85 Kb


--------------------
user posted image
PM MAIL WWW   Вверх
Pankon
Дата 23.6.2006, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 739
Регистрация: 2.6.2005

Репутация: 3
Всего: 5



Цитата(mr.DUDA @  23.6.2006,  14:09 Найти цитируемый пост)
круто конечно
 Согласен.

Цитата(mr.DUDA @  23.6.2006,  14:09 Найти цитируемый пост)
если таким образом привязать размер формы к settings, то в дизайнере изменить размер не получится - при открытии формы, будут восстанавливаться настройки из settings
, что, кстати, показывает, что сеттинги работают..., и именно поэтому и есть кнопочка "Synchronize".

Цитата(mr.DUDA @  23.6.2006,  14:09 Найти цитируемый пост)
лежит в восьми директориях сразу
 странно, у меня он удаляет только из "одной" директории...(но об этом позже)



Цитата(mr.DUDA @  23.6.2006,  14:09 Найти цитируемый пост)
так и не получилось привязать размер/позицию формы к сеттингам - просто ничего не сохраняется, и всё
 А как же я это сделал с первого раза smile (самому стало интересно)

как я писал выше  добираюсь до окна установок.. и выбираю свойство Location (раз уж размер, так и местоположение тоже потестим), даю имя MyLocation(Score-User), нахожу ClientSize, даю имя для "установки" MyClientSize(Score-User). Все.
Запускаю... Меняю размер и местоположение.. Закрываю... Снова запускаю - Ура - Новые установки работают.
Дизaйнер. Хм... Остались старые размеры... Хочу снова иметь размеры, как в дизайнере  smile  smile  smile 
Проект -> Свойства -> Установки -> (Сверху кнопочка ) Синхринизировать(нажимаю) -> окно "Удалить один файл где-то в "C:\Do...\Lokale Einstellungen\Anwendungsdaten\...\WindowsApplication1.vshos_Url_vvqvm5ec15fnt2kctiy1x4zdx2w5ervc\1.0.0.0\user.config"

Теперь компилирую.. Из каталога (у меня это) \bin\Release\ запускаю WindowsApplication1.exe. Проверяю.. Все работает  smile 
А вот после запуска ехе в  "C:\Do...\Lokale Einstellungen\Anwendungsdaten\...\ появился новый (что-то такое я уже сверху предпологал(см.выше)) WindowsApplication1.exe_Url_yqe2yhwgoaqgsrrlwbyhvaqxgzec1nox !!!!, где и хранится 1.0.0.0\user.config для экзешника.
А если мы теперь скопируем(или перенесем) наш экзешник (конечно с WindowsApplication1.exe.config) в другое место и запустим, то .. правильно.. появится файл установок для нового местоположения 
"C:\Do...\Lokale Einstellungen\Anwendungsdaten\...\WindowsApplication1.exe_Url_'вероятно хеш местоположения'\версия сборки\user.config"
т.е. Один узер может иметь одно приложение и настройки к нему(одни), а если такая же сборка запускается из другого каталога, то это, извините, "другое" приложение.

Ну вот и все кажется.

ПС. Если бы я это все знал раньше, smile 
ПС. После компиляции, решил еше раз "синхронизировать".. Пришло сообшение об удалении двух(логично) файлов (дебуг и екзе)...

Цитата(Хоббит @  23.6.2006,  13:39 Найти цитируемый пост)
а изменять их как... например надо хранить адресс сервера БД  
 сейчас напишу, только "попью" ..
 
PM MAIL   Вверх
Pankon
Дата 23.6.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 739
Регистрация: 2.6.2005

Репутация: 3
Всего: 5



Цитата(Хоббит @  23.6.2006,  13:39 Найти цитируемый пост)
а изменять их как... например надо хранить адресс сервера БД  

1. Создаешь в проекте новую "установку" (Проект -> Свойства....)
Напимер - "BaseAddr"
2. В программе 
 - для чтения: strAddr = My.Settings.BaseAddr
 - для сохранения My.Settings.BaseAddr= "121.123.233.233"

Все.


Неприятность
Работает только для виндовсприложения, для консоли - нет  smile 
По крайней мере я не смог заставить консоль сохранять результаты.... Консоль вообще не создает файл настроек... smile 

 
PM MAIL   Вверх
Хоббит
Дата 23.6.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



Как бы не было смешно, но ничего не работает. Создаю проект. Выбираю в идзайнере форму. В свойсвах ApplicationSetings там PropertyBinding даю имя .. все появляется... запускаю меняю размеры, перезапускаю, все по прежнему...
В свойствах есть ... жму на Синхронизировать no user.config file found

Добавлено @ 17:56 
и что за обьет My в строчке My.Settings. ... 
PM MAIL   Вверх
mr.DUDA
Дата 23.6.2006, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Хоббит @  23.6.2006,  17:55 Найти цитируемый пост)
и что за обьет My в строчке My.Settings. ... 

Это в ихнем бейсике есть такой хитрый фич, "My namespace" называется  smile 

Цитата(Хоббит @  23.6.2006,  17:55 Найти цитируемый пост)
Как бы не было смешно, но ничего не работает. Создаю проект. Выбираю в идзайнере форму. В свойсвах ApplicationSetings там PropertyBinding даю имя .. все появляется... запускаю меняю размеры, перезапускаю, все по прежнему...
В свойствах есть ... жму на Синхронизировать no user.config file found

То же что и у меня ? 


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 23.6.2006, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



На VB действительно все пашет. А на C# нет.
Дальше больше. Залез я в дизайнер сеттингов и нашел охриненный метод:
Код

#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
        Private Shared addedHandler As Boolean

        Private Shared addedHandlerLockObject As New Object

        <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
        Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
            If My.Application.SaveMySettingsOnExit Then
                My.Settings.Save()
            End If
        End Sub
#End If
#End Region

Который, судя по названию, сохраняет изменения сэттингов в... а хрен знает куда он их сохраняет. Потому что даже без файла app.config приложение запоминает свое предыдущее расположение. 
В C# такого нет  smile Залез я в дизайнер для шарпа, а там (о ужас) даже Set-тера не предусмотренно  smile Решил я его туда добавить, а заодно добавил и this.save()
Код

            set {
                this["FormLocation"] = value;
                this.Save();
            }

И... нифига. Код сеттера отрабатывает, но форма своего положения не помнит smile 
P.S. Прикрепляю приложение VB которое умеет сохранять свое положение на экране.  

Это сообщение отредактировал(а) ivashkanet - 23.6.2006, 20:17

Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  waTestvb.exe.txt 28,00 Kb
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 23.6.2006, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Короче, не продумали до конца, либо нужно где-то дёргать какой-то метод SaveSettings smile

P.S. не могли уж в деструктор запихать это всё, я не знаю  smile  


--------------------
user posted image
PM MAIL WWW   Вверх
Хоббит
Дата 24.6.2006, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



а может в C# надо еще что то ручками дописать ..... если на класс Settings посмотреть так в нем ничего ... пару коментарирве только стоит


Код

namespace ToolStripTest.Properties {
    
    
    // This class allows you to handle specific events on the settings class:
    //  The SettingChanging event is raised before a setting's value is changed.
    //  The PropertyChanged event is raised after a setting's value is changed.
    //  The SettingsLoaded event is raised after the setting values are loaded.
    //  The SettingsSaving event is raised before the setting values are saved.
    internal sealed partial class Settings {
        
        public Settings() {
            // // To add event handlers for saving and changing settings, uncomment the lines below:
            //
            // this.SettingChanging += this.SettingChangingEventHandler;
            //
            // this.SettingsSaving += this.SettingsSavingEventHandler;
            //
        }
        
        private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
            // Add code to handle the SettingChangingEvent event here.
        }
        
        private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
            // Add code to handle the SettingsSaving event here.
        }
    }
}


вот тут то кажется и надо все делать!!!

Добавлено @ 09:12 
Какой я умный... вот и решил проблемы...
раскоментариваем обработчик SettingsChanging и в нем пишем this.Save()
и все работает под C#
 на самом деле все просто 
PM MAIL   Вверх
mr.DUDA
Дата 24.6.2006, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Хоббит @  24.6.2006,  09:00 Найти цитируемый пост)
раскоментариваем обработчик SettingsChanging и в нем пишем this.Save()

будешь сохранять в файл при каждом изменении каждой настройки ?  smile  


--------------------
user posted image
PM MAIL WWW   Вверх
Хоббит
Дата 24.6.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



ну на произвводительность не влияет ... а хочешь по закрытию пропиши сохранение и все smilesmilesmile 
PM MAIL   Вверх
ivashkanet
Дата 26.6.2006, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Хоббит @  24.6.2006,  09:00 Найти цитируемый пост)
Какой я умный... вот и решил проблемы...
раскоментариваем обработчик SettingsChanging и в нем пишем this.Save()
и все работает под C#
 на самом деле все просто 

А у меня не работало  smile 
Что я делал не так smile  
PM MAIL WWW ICQ   Вверх
Хоббит
Дата 26.6.2006, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



не знаю ... 2 действия расокмнетарить событие (оно в коментариях) и дописать в обработчик строку this.Save() примитивный вариант ...
Можно по закрытию формы. отдельно вызвать Settings.Save(); 
PM MAIL   Вверх
ivashkanet
Дата 24.10.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(ivashkanet @  23.6.2006,  20:10 Найти цитируемый пост)
На VB действительно все пашет. А на C# нет.

Я сегодня нашел почему smile

В свойствах VB проекта есть зампенчательная галка, дословно: "Save My.Settings on Shutdown"
Во какая суперфича  smile 

Т.е. с C# проекте нужно сохранять их руками smile
PM MAIL WWW ICQ   Вверх
Rapalex
Дата 24.10.2006, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 2
Всего: 8



Длинный форум я так просмотрел, и не видел у вас такой ссылки, а вы посмотрите!!!
How to Use Settings in Visual C# 2005 


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Elfet
Дата 9.7.2007, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



А если я не хочу хранить настройки программы в папке там где и находится программа, а в какой-нибудь другой папке скрытой от пользователей, но всём доступной?


--------------------
PM MAIL WWW Skype   Вверх
mr.DUDA
Дата 9.7.2007, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Elfet @  9.7.2007,  21:42 Найти цитируемый пост)
А если я не хочу хранить настройки программы в папке там где и находится программа, а в какой-нибудь другой папке скрытой от пользователей, но всём доступной?

Тогда ручками сохраняй/читай файл откуда угодно в своём собственном формате.


--------------------
user posted image
PM MAIL WWW   Вверх
Azzdorf
  Дата 9.7.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Цитата(mr.DUDA @ 9.7.2007,  23:06)
Тогда ручками сохраняй/читай файл откуда угодно в своём собственном формате.

тут сериализация подойдет, там можна настройки как захочеш запихнуть, я например привращаю их в пару-значение, или пару - 10 значений и использую те которые нужно, притом в этом файле попрописую после каждого открытия откуда последний раз открывался файл конфигцрации и если его не перемещать то програма в начале не бедт создавать файл из стандартными настройками, если кому надо выложу исходник...
--------------------
Иногда шаг вперед - это результат хорошего пинка под зад.
PM MAIL   Вверх
Elfet
Дата 10.7.2007, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



угу, это всё уже понятно. А вот в какую папку сохранять настройки?


--------------------
PM MAIL WWW Skype   Вверх
ivashkanet
Дата 10.7.2007, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



C:/Windows/System32/CriticalData/VeryCriticalData/DoNotModify  smile 

Elfet, да где хочешь. 
Можно, например, использовать C:\Documents and Settings\<UserName>\Application Data\MySuperPuperApp либо C:\Documents and Settings\All Users\Application Data\MySuperPuperApp

PM MAIL WWW ICQ   Вверх
Elfet
Дата 10.7.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Ок! smile C:\Documents and Settings\<UserName>\Application Data\MySuperPuperApp - а как получить адрес  этой папки? Ну там не обязательно же на диске C:\ и тд..


--------------------
PM MAIL WWW Skype   Вверх
ivashkanet
Дата 10.7.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Токи шо попробовал:
Application.CommonAppDataPath == C:\Documents and Settings\All Users\Application Data\Enterprise\caTestcs\1.0.0.0
Application.LocalUserAppDataPath == C:\Documents and Settings\<UserName>\Local Settings\Application Data\Enterprise\caTestcs\1.0.0.0
Application.UserAppDataPath == C:\Documents and Settings\<UserName>\Application Data\Enterprise\caTestcs\1.0.0.0

P.S. 'Enterprise' -- хз что, скорее всего производитель.
'caTestcs' -- название проета (или что-то похожее)
'1.0.0.0' -- Версия
PM MAIL WWW ICQ   Вверх
Elfet
Дата 10.7.2007, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



ivashkanet, ок! спаибо! smile


--------------------
PM MAIL WWW Skype   Вверх
thomas
Дата 23.7.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



Приветствую всех.
Несколько раз прочитал всю тему. Плюс в своем тестовом приложении кое что попробовал.
В дизайнере settings создал несколько штук, значения оставил пустыми. Предполагается что их внесет пользователь при настройке приложения и далее по ходу пьесы будет менять по мере необходимости.
Приложение на "барсике", т.е. использую Me.Settings .
Все вроде работает. Созданный студией файл app.config  остается без изменений. Настройки сохраняются в файл user.config, расположенный в моей директории. Если в дизайнере запросить синхронизацию, то этот файл удаляется.

А теперь у меня "хитрый" вопрос к уважаемому сообществу.

А куда будут писаться настройки(какой файл и где сохраняется) введенные пользователем программы, после её установки на другом компе? 
И почему не вносятся изменения в app.config? 


ivashkanet
А это 
Цитата

Application.CommonAppDataPath == C:\Documents and Settings\All Users\Application Data\Enterprise\caTestcs\1.0.0.0
Application.LocalUserAppDataPath == C:\Documents and Settings\<UserName>\Local Settings\Application Data\Enterprise\caTestcs\1.0.0.0
Application.UserAppDataPath == C:\Documents and Settings\<UserName>\Application Data\Enterprise\caTestcs\1.0.0.0

где пишеться?


И плюс еще вопрос в догонку:
а как во время run time можно записать значения в app.config?

Это сообщение отредактировал(а) thomas - 24.7.2007, 07:49


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
ivashkanet
Дата 24.7.2007, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(thomas @  23.7.2007,  23:16 Найти цитируемый пост)
А куда будут писаться настройки(какой файл и где сохраняется) введенные пользователем программы, после её установки на другом компе?

А это сташная тайна (во всяком случае я так и не нашел когда искал. Может кому повезет больше smile ).
Цитата(thomas @  23.7.2007,  23:16 Найти цитируемый пост)
где пишеться?

Нигде. Это вычисляет сам .Net. Доступ к этим путям есть из класса Application.

PM MAIL WWW ICQ   Вверх
Rapalex
Дата 30.11.2007, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 2
Всего: 8



Привет всем, только что увидел что моя ссылка не решила проблемы.
Сейчас она не доступна, нашел что-то похожее тут

Видимо вы ее не прочитали, или не поняли, или не поняли результатов своих опытов.

1 - вы заметили что создаётся конфиг файл с названием экзешника, верно, но настройки пользователя в нем не хранятся.
В нём хранятся настройки по умолчанию. И если вам необходимо какойто параметр при редистрибуции изменить, его можно изменить в файле и распространять и при этом НЕ пересобирать сборку.
А если этот файл удалить то значения возьмутся непосредственно из сборки, и ничего страшного не произойдёт.

2 - как я уже сказал настройки хранятся не в нём а хранятся они в спецальных XML файла в той самой папке апп дата, для каждого пользователя свои, да ещё с учётом версий проги, да и сохраняются только измененные переметры.


Т.е. никаких велосипедов изобретать не надо.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1504 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.