1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

ВОПРОС Ошибка при чтении конфигурационного файла

Тема в разделе "C#\C++", создана пользователем tumanovalex, 12 янв 2018.

  1. TopicStarter Overlay
    tumanovalex

    tumanovalex Новичок

    Регистрация:
    12.01.18
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    10
    Пол:
    Мужской
    На другом форуме (http://www.sql.ru/forum/1282259/primer-iz-kursa-ado-net-ne-rabotaet) разместил вопрос, проект C# и ссылку на видео с ошибкой. Помогите, пожалуйста, разобраться, почему возникает ошибка и не записывается информация в конфигурационный файл. Проект прикрепил.

    Вложения:

    • AppConfig.zip
      Размер файла:
      3,2 КБ
      Просмотров:
      5
  2. D_Jackas

    D_Jackas А теперь ПиЗдыК O_o Команда форума

    Регистрация:
    11.01.12
    Сообщения:
    396
    Симпатии:
    180
    Баллы:
    575
    Пол:
    Мужской
    ICQ:
    611308
    Skype:
    lebedevif
    Конечно может вопрос и глупый, но не проще ли писать и хранить конфигурацию в Properties.Settings или в том же ini?
    --- Добавлено, 12 янв 2018 ---
    Случай с ini:
    Сам класс
    PHP:
    using System.IO;
    using System.Reflection;
    using System.Runtime.InteropServices;
    using System.Text;

    namespace 
    IniFiles
    {
        class 
    IniFile
        
    {
            
    string Path//Имя файла.

            
    [DllImport("kernel32")] // Подключаем kernel32.dll и описываем его функцию WritePrivateProfilesString
            
    static extern long WritePrivateProfileString(string Sectionstring Keystring Valuestring FilePath);

            [
    DllImport("kernel32")] // Еще раз подключаем kernel32.dll, а теперь описываем функцию GetPrivateProfileString
            
    static extern int GetPrivateProfileString(string Sectionstring Keystring Default, StringBuilder RetValint Sizestring FilePath);

            
    // С помощью конструктора записываем пусть до файла и его имя.
            
    public IniFile(string IniPath)
            {
                
    Path = new FileInfo(IniPath).FullName.ToString();
            }

            
    //Читаем ini-файл и возвращаем значение указного ключа из заданной секции.
            
    public string ReadINI(string Sectionstring Key)
            {
                var 
    RetVal = new StringBuilder(255);
                
    GetPrivateProfileString(SectionKey""RetVal255Path);
                return 
    RetVal.ToString();
            }
            
    //Записываем в ini-файл. Запись происходит в выбранную секцию в выбранный ключ.
            
    public void Write(string Sectionstring Keystring Value)
            {
                
    WritePrivateProfileString(SectionKeyValuePath);
            }

            
    //Удаляем ключ из выбранной секции.
            
    public void DeleteKey(string Keystring Section null)
            {
                
    Write(SectionKeynull);
            }
            
    //Удаляем выбранную секцию
            
    public void DeleteSection(string Section null)
            {
                
    Write(Sectionnullnull);
            }
            
    //Проверяем, есть ли такой ключ, в этой секции
            
    public bool KeyExists(string Keystring Section null)
            {
                return 
    ReadINI(SectionKey).Length 0;
            }
        }
    }
    Вызов
    PHP:
    .....
    using System.Text;
    using System.Windows.Forms;
    ....

    namespace 
    IniFiles
    {
        public 
    partial class Form1 Form
        
    {
            
    IniFile INI = new IniFile("config.ini");
            public 
    Form1()
            {
                
    InitializeComponent();
                ...
            }
    ....
         private 
    void method(){
           
                    
    INI.ReadINI("SettingForm""Height")     //Чтение
                   
                    
    INI.WriteINI("SettingForm""Height""Тут параметр");
          }
    ....
        }
    }
    Последнее редактирование: 12 янв 2018
  3. TopicStarter Overlay
    tumanovalex

    tumanovalex Новичок

    Регистрация:
    12.01.18
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    10
    Пол:
    Мужской
    С Properties.Settings не работал. В чем отличие от использования App.config? Я хотел бы сделать переносимое приложение, когда исполняемый файл и файл настроек находятся в одной директории, которую можно просто копировать и больше ничего не настраивать, только запустить исполняемый файл. Использование Properties.Settings это позволяет? В каком файле сохраняются настройки?
  4. D_Jackas

    D_Jackas А теперь ПиЗдыК O_o Команда форума

    Регистрация:
    11.01.12
    Сообщения:
    396
    Симпатии:
    180
    Баллы:
    575
    Пол:
    Мужской
    ICQ:
    611308
    Skype:
    lebedevif
    Ну по мне вариант что с INI что с Properties.Settings одно и тоже. единственное для работы с INI нужно класс писать (выше написал, да и вот как то писал статейку). В случае с Properties.Settings идешь в свойства проекта и переходишь во вкладку [Параметры] и там задаешь параметры по умолчанию. После в коде начинаешь с ними работать. Пример:
    PHP:
    ReadText Properties.Settings.Default.Text// Чтение из конфигурации парамера Text

    Properties.Settings.Default.Text WriteText// Запись в параметр Text
    Properties.Settings.Default.Save();  // Сохраняем запись в Text
    --- Добавлено, 13 янв 2018 ---
    Мелкое дополнение к Properties.Settings. В разделе [Параметры] есть таблица для создания самих параметров:
    upload_2018-1-13_11-31-51.png
    Где:
    Имя - Имя параметра,
    Тип - Тип переменной (параметра),
    Область - Где будет храниться данный параметр (файл с этим параметром. т.е. где твоему приложение искать его),
    Значение - Значение самого параметра, т.е. сам параметр
  5. TopicStarter Overlay
    tumanovalex

    tumanovalex Новичок

    Регистрация:
    12.01.18
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    10
    Пол:
    Мужской
    Спасибо за ответ! Попробовал. Как я понял, все параметры и их значения сохраняются в файле App.config, а после компиляции сохраняются в файле <имя проекта>.exe.config. Хотел бы уточнить следующее:
    1. В области есть 2 возможности: пользователь и приложение. Когда следует выбирать пользователя, а когда приложение? Мне хотелось бы иметь возможность как читать, так и изменять значения параметров (добавлять параметры и их значения).
    2. При переносе файлов <имя проекта>.exe и <имя проекта>.exe.config я буду иметь автономное приложение, которое могу переносить простым копированием с компьютера на компьютер?
  6. cerber

    cerber Местный инквизитор Команда форума

    Регистрация:
    25.02.11
    Сообщения:
    8.605
    Симпатии:
    2.783
    Баллы:
    575
    Пол:
    Мужской
    Адрес:
    АДА
    Вам подойдет вариант хранения конфигурации рядом с приложением.
  7. TopicStarter Overlay
    tumanovalex

    tumanovalex Новичок

    Регистрация:
    12.01.18
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    10
    Пол:
    Мужской
    Правильно ли я понял, что в области надо выбирать приложение и тогда можно будет просто переносить файлы <имя проекта>.exe и <имя проекта>.exe.config?
  8. cerber

    cerber Местный инквизитор Команда форума

    Регистрация:
    25.02.11
    Сообщения:
    8.605
    Симпатии:
    2.783
    Баллы:
    575
    Пол:
    Мужской
    Адрес:
    АДА
    скорее <имя проекта>.exe и <имя конфига>.config
  9. TopicStarter Overlay
    tumanovalex

    tumanovalex Новичок

    Регистрация:
    12.01.18
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    10
    Пол:
    Мужской
    Спасибо всем ответившим на мои вопросы!

Поделиться этой страницей